Aqui está meu arquivo t.tsv delimitado por tabulação:
$ cat t.tsv
2022/05/05 -258.03
2022/05/07 -18.10
2022/05/09 -10.74
2022/05/09 -132.60
2022/05/12 -18.56
2022/05/12 -20.20
2022/05/17 -11.00
2022/05/17 -112.91
2022/05/17 -51.43
2022/05/17 -64.78
2022/05/18 -13.96
2022/05/18 -13.96
2022/05/18 -7.51
2022/05/19 -17.08
2022/05/20 -33.08
Estou usando a classificação do MacOS 12.4 (da página man: O utilitário de classificação é compatível com a especificação IEEE Std 1003.1-2008 (“POSIX.1”) ) para classificar primeiro por col 1 em alfa seq ascendente, depois por col2 em ascendente numérico.
$ cat t.tsv|sort --field-separator='\t' --key=1,1 --key=2,2n
2022/05/05 -258.03
2022/05/07 -18.10
2022/05/09 -10.74
2022/05/09 -132.60
2022/05/12 -18.56
2022/05/12 -20.20
2022/05/17 -11.00
2022/05/17 -112.91
2022/05/17 -51.43
2022/05/17 -64.78
2022/05/18 -13.96
2022/05/18 -13.96
2022/05/18 -7.51
2022/05/19 -17.08
2022/05/20 -33.08
Estou perplexo por que a segunda coluna não está sendo classificada em sequência numérica crescente quando a primeira coluna é a mesma. Numerosas respostas SE para essa mesma pergunta dizem que (a) você especifica colunas únicas como --key=1,1
, e (b) você pode aplicar opções como -n
definições de chave individuais como --key=2,2n
.
Atualização: devo mencionar que meu shell é bash
.
Não conheço uma
sort
implementação que entenda\t
ou outras representações de caracteres, você precisa usar a citação ANSI-C :Além disso, de acordo com esta página de manual do macOS , " A página de manual da Apple para classificação inclui opções longas do GNU para todos os itens acima, mas elas (ainda) não foram implementadas no macOS " . mas eu ainda usaria as opções curtas padrão para portabilidade garantida:
--key
--field-separator
sort
O comando acima, com macOS, GNU e busybox
sort
, retorna: