Я хотел бы отсортировать файл с определенным разделителем (ascii 0xff), и записи заканчиваются нулем. Я не могу использовать следующую команду, хотя:

$ sort -z -t \xff -o data data

Сообщение об ошибке:

На FreeBSD:

sort: xff: Invalid argument

и в Linux:

sort: multi-character tab ‘xff’

Есть ли способ сделать это портативным способом? (через сортировку gnu coreutils и bsd и через различные оболочки).

1 ответ1

0

Хм, этот $'\xff' на самом деле является функцией Bash и должен быть независимым от ОС. Это работает здесь на FreeBSD 9.1 (пробовал bash, ksh, zsh):

$ head -3 foo
26436�22977
4478�3214
28822�4147

$ head -3 foo | sort -n -t $'\xff' -k2
4478�3214
28822�4147
26436�22977

Хорошо, если это не сработает, возможно, это будет работать с (BSD-)awk:

$ head -3 a | awk -F $'\xff' '{print $1" "$2}' | sort -nk2 | awk '{print $1"\xff"$2}'
4478�3214
28822�4147
26436�22977

Да, это некрасиво

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .