Use o código ascii de um caractere como uma entrada para ordenar

0

Eu gostaria de classificar um arquivo com um delimitador específico (ascii 0xff) e os registros são terminados com zero. Eu não posso usar o seguinte comando embora:

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

A mensagem de erro é:

No FreeBSD:

sort: xff: Invalid argument

e no Linux:

sort: multi-character tab ‘xff’

Existe uma maneira de fazer isso de maneira portátil? (através do gnu coreutils sort e bsd sort e através de diferentes shells).

    
por Shayan 20.01.2014 / 02:25

1 resposta

0

Hm, esse $'\xff' é realmente um recurso de Bash e deve ser agnóstico do SO. Isso funciona aqui no FreeBSD 9.1 (tentei 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

OK, se isso não funcionar, talvez funcione com (BSD-) awk:

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

Sim, é feio: - \

    
por 20.01.2014 / 06:58