【发布时间】:2017-09-26 17:55:28
【问题描述】:
我正在尝试对可变数量的文本列进行排序,有时有 3 个字段有时有 2 个。
示例输入:
George W. Bush
Brack Obama
Micky Mouse
John F. Kennedy
想要的结果:
George W. Bush
John F. Kennedy
Micky Mouse
Brack Obama
我想按姓氏的字母顺序获取它们,所以使用$3 或$2 字段。
到目前为止,我已经翻转了每一行以将姓放在前面。但是,要对它们进行排序,我似乎无法将它们翻转回来。我试过数组,我得到的输出比预期的多(重复)。
我只想将其保留为 awk 文件。
我考虑过使用另一个 awk 文件将它们翻转回(比如说)awk 文件的脚本,但我无法在 awk 中创建文件(使用 bash 脚本)。我一直在阅读Linux 实用指南,但我看到的示例似乎都一样。感谢您查看我的问题。
目前这是我完成它的方式
{
#print $3 " " $1 " " $2;
if($3 == ""){
#print "me";
print $2 " " $1;
#list[$3]= $2" "$1
}else{
print $3" "$1" "$2 ;
#list[$3]= $3" " $2" "$1;}
#for(result in list){ print list[result]; }
}
}
gawk -f fileUsed alphRecoredToBeUsed | sort
给我留下按我想要的方式排序的范围值。然而,在保持 alpha 排序的同时向它们呈现第一个原始值。
【问题讨论】:
-
能否请您在代码标签中也发布预期的输出?