使用xargs和awk处理多个文件,并将处理后的数据写入单独的文件

时间:2016-03-04 13:11:47

标签: bash awk find output xargs

我想用awk处理几个文件,然后将awk的输出传输到单独的文件。我想用awk处理单个文件并将输出写入文件,但是将它与find和xargs结合起来对我来说是个问题。
这是当前的命令:

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

这只会创建一个文件,并将awk中的所有已处理数据合并到一个名为

的文件中
  

“{}。处理过的”


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

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

  

file1.data.processed
  file2.data.processed

2 个答案:

答案 0 :(得分:1)

为什么不为此使用FILENAME awk Buildin变量:

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

答案 1 :(得分:0)

您可以使用for循环来处理此任务,而不是使用xargs

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