在* nix环境中,我如何将列组合在一起?

我有以下文本文件:

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

有没有办法,使用标准* nix工具(cut,grep,awk,sed等)来处理这样的文本文件并得到以下输出:

 A A A B B B C C C 

你可以做:

 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 

第三部分将剥离数字

如果您在高级栏中已经知道了,则可以使用shell for循环与cut相结合。 这是一个使用bash语法的例子:

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

尝试:

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