使用 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 处理多个文件并将处理后的数据写入单独的文件的主要内容,如果未能解决你的问题,请参考以下文章