我有一个标签分隔文件file.txt
,其内容如下:
word11 word12 word13 word14
word21 word22 word23 word24
word31 word32 word33 word34
word41 word42 word43 word44
我想将每个列复制到不同的文件中。例如:第一个文件将包含:
word11
word21
word31
word41
第二个文件将包含:
word12
word22
word32
word42
我写了相同的脚本(有12列):
for i in {1..12}
do
awk -F "\t" '{print $i}' file.txt > /tmp/output-$i.txt
done
但是所有输出文件都包含所有数据:
word11 word12 word13 word14
word21 word22 word23 word24
word31 word32 word33 word34
word41 word42 word43 word44
谢谢您的帮助。
您正尝试在Awk
中使用shell变量,这些变量永远不会起作用。但是你要做的事情完全可以在Awk
本身完成。 NF
的for循环将解析你的所有列,你不需要再对其进行硬编码。
awk -v FS="\t" '{for (i=1;i<=NF;i++) print $i > ("/tmp/output-"i);}' file.txt
你可以改用切割
for i in {1..12}
do
cut -f$i file.txt > /tmp/output-$i.txt;
done