2014-09-27 146 views
0

我想创建一个列表,其中包含我们的销售办事处以供快速参考。办公室在奥尔巴尼,克利夫兰,芝加哥,亚特兰大,休斯敦,西雅图,迈阿密,萨克拉门托和安克雷奇。 我怎么能把这个列表按字母顺序排列。通过shell脚本按字母顺序排列的列表

回答

2

您可以使用程序sort排序文件的行。

sort offices.txt 

将排序的行写入标准输出。您可能需要将它们重定向到一个文件。

sort offices.txt > offices_sorted.txt 

如果你想模仿“就地”排序,也就是,覆盖原文件,下面的模式是很常见:

sort offices.txt > offices.txt.sorted && mv offices.txt.sorted offices.txt 

要小心,不要选择一个文件名的临时文件可能已经存在,或者您将覆盖另一个文件。如果有疑问,可以使用mktemp以保证安全。

tempfile="$(mktemp)" 
sort offices.txt > "$tempfile" && mv "$tempfile" offices.txt 

最后,如果你想在不将其写入到一个文件中的一些数据进行排序,您可以使用“立即文档”语法:

cat <<EOF | sort 
Sacramento 
Anchorage 
Albany 
Houston 
Seattle 
Miami 
Cleveland 
Chicago 
Atlanta 
EOF 

输出:

Albany 
Anchorage 
Atlanta 
Chicago 
Cleveland 
Houston 
Miami 
Sacramento 
Seattle 
+0

任何理由不使用'sort filename'而不用所有的'cat << EOF'东西?或者你是不是在创建一个文件?似乎只是为了显示命令,OP会更清楚。 – beroe 2014-09-27 19:16:42

+0

@beroe我假设OP没有文件中的数据。我会更新答案以解决这两种情况。 – 5gon12eder 2014-09-27 19:20:31

+0

所以我不需要在终端上写一个脚本,对吧? 谢谢 – 2014-09-27 19:33:05