2011-10-10 42 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 
相关问题