2014-09-27 50 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