Ao encadear no comando sed
com &&
, você disse ao shell para executar esse comando separadamente. Isso deixou a saída cat ... cut ... sort
sozinha e então também imprimiu a segunda linha, sem nenhum corte.
Se você deseja imprimir apenas a segunda linha (classificada) de entrada, altere-a para:
cut -d ' ' --fields=2,3 | sort | sed -n 2p
Não há necessidade de repetir / dev / stdin, pois ambos cut
e sed
lerão stdin quando você não fornecer um arquivo de entrada.
Para imprimir os 2º e 3º campos delimitados por espaço de um arquivo, assim como imprimir toda a segunda linha, você pode fazer tudo dentro do sed:
sed -e 2p -e 's/^[^ ]* //' < report.txt | sort
Isso diz ao sed que executam dois programas:
-
p
rint linha 2 e -
s
earch e replace: desde o início da linha, zero ou mais caracteres não espaciais, seguidos por um espaço ... com: (nada)
Quando executado em sua entrada de amostra atualizada, recebo:
Books 5
Colorpen 2
Eraser 1
Khata 3
Pen 12
Sakib Khata 3
Sharpner 1
... pois Sakib Khata 3
é a segunda linha do arquivo.