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

Posted

技术标签:

【中文标题】使用 xargs 和 awk 处理多个文件并将处理后的数据写入单独的文件【英文标题】:Process several files with xargs and awk and write the processed data to separate files 【发布时间】:2016-06-18 05:50:01 【问题描述】:

我有几个文件要使用 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

【问题讨论】:

How to use > in an xargs command?的可能重复 【参考方案1】:

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

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

【讨论】:

那是完美的。我不知道 awk 实际上可以输出到文件。我一直认为它只负责文本处理。谢谢7171u先生【参考方案2】:

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

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

【讨论】:

以上是关于使用 xargs 和 awk 处理多个文件并将处理后的数据写入单独的文件的主要内容,如果未能解决你的问题,请参考以下文章

awk,seq,xarg实例使用

xargs命令

awk同时处理多个文件

xargs---组合命令的工具

Linux-xargs命令

使用 AWK 处理来自多个文件的输入