オタクな人を分類するのに苦労しています。私は現在以下を持っています:
gawk -f p3a01.awk unsortedNames.txt | sort | gawk -f p3a01.awk
しかし、これは間違った結果をもたらします。次のようなことをすると、gawkが正常に動作しているようです。
gawk -f p3a01.awk unsortedNames.txt | sort > test1.out
gawk -f p3a01.awk test1.out
ソートをgawkに直接パイプする正しい方法があるかどうかはわかりません。私は理想的にすべてを一行にしたいと思います。
スニペットunsortedNames.txt
:
Faye King
Lenny R Graph
I M Board
Grey White
p3a01.awk
(姓を最初に記載し、残りの名前を記入してください):
BEGIN{}
{
printf $NF " ";
$NF="";
print $0;
}
END{}
p3a02.awk
(姓に基づいてソートした後、元の順序でファイルを印刷します):
BEGIN{}
{
for(i=2;i<=NF;i++){
printf $i " ";
}
print $1;
}
END{}
最終結果(性別に並べ替え):
I M Board
Lenny R Graph
Faye King
Grey White
ベストアンサー1
最適化単一処理牛に似た一種の栄養アッ解決策:
awk 'BEGIN{ PROCINFO["sorted_in"]="@ind_str_asc" }
{ a[$NF]=$0 }END{ for(i in a) print a[i] }' unsortedNames.txt
PROCINFO["sorted_in"]="@ind_str_asc"
- 配列キー/インデックスに基づいて比較/ソートします。事前定義された配列を事前定義されPROCINFO
た値のセットの1つに設定できます。これらの特殊値はここで説明されています(文書)。https://www.gnu.org/software/gawk/manual/gawk.html#Controlling-Scanning
出力:
I M Board
Lenny R Graph
Faye King
Grey White