我正在尝试对包含如下条目的文件进行排序:
Essie | Vaill | 14225 Hancock Dr | Anchorage | AK | 99515 907-345-0962
请注意“|”代表各种尺寸的标签。我试图按第二个字段对此进行排序,在本例中是按字母顺序排列的姓氏。我尝试了几种不同的命令,例如(注意addresses.txt是文件的名称):
sort -k 2 addresses.txt
sort -t$'\t' -k2 addresses.txt
sort -t "`/bin/echo '\t'`" -k 2 addresses.txt
这些都没有给我想要的结果,在搜索互联网后,我根本找不到按照我需要的方式工作的解决方案。如果有人能帮助我找到按字母顺序对第二列进行排序的方法,我将不胜感激。
答案1
你能尝试一下吗:
sort -t"|" -k2 address.txt
我想这应该可以
答案2
Perl 中更通用的方法。如果空格的编码与常规空格或制表符不同,这可能会对您有所帮助:
perl -aF'[[:blank:]]+' -nle '
$lines{$_}=[@F];
END{
print for sort { $lines{$a}[1] cmp $lines{$b}[1] } keys %lines
}' your_file
不过,我不能保证它与sort
基于 的解决方案相比将如何扩展。