如何在某个分隔符作为键之前使用最后一个单词在shell中按字母顺序对文本文件进行排序?
E.g。以下文件:
Manfred1 Mustermann1 (Berlin)
Manfred Siegfried Müller (Aachen)
Gerd A. Meier (Stuttgart)
在这种情况下,分隔符将是" ("我想使用列表中人员的姓氏排序。姓氏前的字数不同。
鉴于一行文字,我知道如何提取密钥:
s="Manfred1 Mustermann1 (Berlin)"
w=${s%% (*}
l=${w##* }
echo $l
这显示" Mustermann1",但我没有得到任何进一步。
修改 使用l0b0的答案,这是完成它的完整代码:
while read s; do
w=${s%% (*}
l=${w##* }
printf "%s\t%s\n" "$l" "$s"
done <names.txt | sort -k 1 | cut -f 2 > names_sorted.txt
其中names.txt包含文本,排序列表将打印到names_sorted.txt
答案 0 :(得分:0)
获得排序键($l
)后,您可以这样继续:
printf %s\t%s\n
中所示。sort
的{{1}}选项按第一列排序(标签应为默认密钥分隔符)。--key
或awk
。