2016-03-04 164 views
1

我有几个文件需要使用awk处理,然后将awk的输出管道输出为单独的文件。我想用awk处理单个文件并将输出写入文件,但将它与find和xargs结合对我来说是有问题的。
这是当前的命令:使用xargs和awk处理多个文件并将处理后的数据写入单独的文件

find ./*.data -print0 | xargs -0 -I{} awk '/^00/ {printf "Data: %s"$0;}' > {}.processed 

这仅创建一个文件,并通过所有AWK处理数据组合到名为单个文件

“{} .processed”


将所有输出数据写入单独文件的正确方法是什么?

输出的文件 “file1.data” 和 “file2.data” 的文件名应该是:

file1.data.processed
file2.data.processed

+0

的可能的复制[?如何使用>在xargs的命令(http://stackoverflow.com/questions/845863/how-to-use -in-an-xargs-command) –

回答

1

你为什么不使用FILENAME AWK变量的buildin此:

awk '/^00/ {printf "Data: %s",$0 >(FILENAME".processed")}' $(find ./*.data) 
+0

这是完美的。我不知道awk实际上可以输出到文件。我一直认为它只负责文本处理。谢谢先生7171u – asdflair

+0

没问题的队友 – 7171u

0

而不是使用的你可以使用一个for循环来处理这个任务:

for F in `find ./*.data`; do 
    awk '/^00/ {printf "Data: %s"$0;}' "$F" > "$F".processed 
done