捕获动态列并将整行写入文件

时间:2014-11-14 11:40:52

标签: bash perl awk sed

我希望在这种情况下捕获第4列,它可以是不同的字符串,并且在该字符串的基础上将整行放入文件中,并且如果某些字符串重复到同一文件也要放置。我要创建的文件的名称是第4列的名称。

1 OI 021 141012 1321 0001242
1 OI 021 141013 1322 0001242
1 OI 021 141013 1323 0001242
1 OI 021 141012 1322 0001242
1 OI 021 141011 1321 0001242

很难做出的期望是这样的:

文件名141011包含:

1 OI 021 141011 1321 0001242

文件名141012包含:

1 OI 021 141012 1321 0001242
1 OI 021 141012 1322 0001242

文件名141013包含:

1 OI 021 141013 1322 0001242
1 OI 021 141013 1323 0001242

1 个答案:

答案 0 :(得分:4)

只需将print重定向到第4个字段,该字段将被视为文件名:

awk '{print > $4}' file

如果这些14101*文件已经存在并且您想要追加数据而不是截断数据,请使用>>

awk '{print >> $4}' file

测试

$ awk '{print > $4}' file
$ tail 14101*
==> 141011 <==
1 OI 021 141011 1321 0001242

==> 141012 <==
1 OI 021 141012 1321 0001242
1 OI 021 141012 1322 0001242

==> 141013 <==
1 OI 021 141013 1322 0001242
1 OI 021 141013 1323 0001242