逐列打印文件数据内容

Aka*_*aSh 1 bash ubuntu awk

我有一个制表符分隔文件,file.txt其内容如下:

word11 word12 word13 word14
word21 word22 word23 word24
word31 word32 word33 word34
word41 word42 word43 word44
Run Code Online (Sandbox Code Playgroud)

我想将每个列复制到不同的文件中.例如:第一个文件将包含:

word11
word21
word31
word41
Run Code Online (Sandbox Code Playgroud)

第二个文件将包含:

word12
word22
word32
word42
Run Code Online (Sandbox Code Playgroud)

我写了相同的脚本(有12列):

for i in {1..12}
do
        awk -F "\t" '{print $i}' file.txt > /tmp/output-$i.txt
done
Run Code Online (Sandbox Code Playgroud)

但是所有输出文件都包含所有数据:

word11 word12 word13 word14
word21 word22 word23 word24
word31 word32 word33 word34
word41 word42 word43 word44
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

Ini*_*ian 5

您正在尝试使用shell变量,Awk这将永远不会工作.但是你要做的事情Awk本身就可以完成.for循环NF将解析您的所有列,您不再需要对其进行硬编码.

awk -v FS="\t" '{for (i=1;i<=NF;i++) print $i > ("/tmp/output-"i);}'  file.txt
Run Code Online (Sandbox Code Playgroud)

  • @JamesBrown:Yup但是'Awk`的双引号是我从不推荐的东西;) (2认同)