2011-10-10 77 views
2

我有以下的文本文件:在* nix環境中,我如何將列組合在一起?

A,B,C 
A,B,C 
A,B,C 

有沒有一種方法,使用標準的* nix工具(剪切,grep的,AWK,sed的,等等),來處理這樣的文本文件,並得到下面的輸出:

A 
A 
A 
B 
B 
B 
C 
C 
C 
+0

我想你應該能夠做到這一點'RS(1)'獨自一人,但我不能把它作爲我希望我的電腦上工作。 – jwodder

回答

5

你可以這樣做:

tr , \\n 

,這將產生

A 
B 
C 
A 
B 
C 
A 
B 
C 

你可以排序。

除非你想拉的第一列然後第二個,然後第三,在這種情況下你想要的東西,如:

awk -F, '{for(i=1;i<=NF;++i) print i, $i}' | sort -sk1 | awk '{print $2}' 

爲了解釋這一點,第一部分產生

1 A 
2 B 
3 C 
1 A 
2 B 
3 C 
1 A 
2 B 
3 C  

第二部分將穩定分類(所以內部訂單保留)

1 A 
1 A 
1 A 
2 B 
2 B 
2 B 
3 C 
3 C 
3 C  

和第三部分將剝離數字

0

嘗試:

awk 'BEGIN {FS=","} /([A-C],)+([A-C])?/ {for (i=1;i<=NF;i++) print $i}' YOURFILE | sort 
3

,如果你在先進知道的列數,您可以使用for循環與切相結合的外殼。下面是使用bash語法的例子:

for i in {1..3}; do 
    cut -d, -f $i file.txt 
done 
相關問題