我正在尝试使用awk和sort按姓氏对一个名称文件进行排序。有些没有中间名。下面是一个例子:

Rachel K Green
Chandler M Bing
Ross E Geller
Phoebe Buffay
Monica E Geller
Joey F Tribbiani

我试过的是:
awk -F " " '{print $NF, $0}' names.txt | sort

这张照片:
Bing Chandler M Bing
Buffay Phoebe Buffay
Geller Monica E Geller
Geller Ross E Geller
Green Rachel K Green
Tribbiani Joey F Tribbiani

我真的明白为什么要打印姓氏然后打印整行。我不知道如何按姓氏排序,然后打印行。如果我只使用$0,不使用$NF,它不会按姓氏排序。
欢迎任何反馈。谢谢:)

最佳答案

$ awk '{print $NF, $0}' names.txt | sort -k1 | cut -d ' ' -f2-
Chandler M Bing
Phoebe Buffay
Monica E Geller
Ross E Geller
Rachel K Green
Joey F Tribbiani

cut -d ' '-f2-通过删除为$NF打印的最后一个字段awk返回原始行。

09-25 18:52