LEC05のすべての生徒を見つけ、名前をソートされた順序で印刷する1行のシェルコマンド

LEC05のすべての生徒を見つけ、名前をソートされた順序で印刷する1行のシェルコマンド

input.txtたとえば、次を含むファイルがあるとします。

100 John Doe LEC05 12356

132 Carol Bon LEC05 156

122 Cavar Liktik LEC01 136

...

このコマンドは、各人を見つけて名前付きファイルにLEC05順番に名前を印刷する必要があります。sortedoutput.txt

コマンドは1行のコマンド(パイプを含む)でなければなりません。

どうなるかよく分からない。

see if LEC05 | find first name at index 1 | sort < input.txt > output.txt

この部分はどうすればいいですかsee if LEC05 | find first name at index 1

答え1

そしてawk

awk '$4 == "LEC05" { print $2 }' /path/to/inputfile | sort > outputfile

そして:grepcut

grep 'LEC05' /path/to/inputfile | cut -f2 | sort > outputfile

答え2

もっと混乱

     awk '/LEC05/{ name[$2]++ } END { n = asorti( name,sname ); for ( i in sname ) print sname[i]}' input.txt

関連情報