【问题标题】:Process several files with xargs and awk and write the processed data to separate files使用 xargs 和 awk 处理多个文件并将处理后的数据写入单独的文件
【发布时间】: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

【问题讨论】:

标签: bash awk find output xargs


【解决方案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

【讨论】:

    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 2022-07-04
    • 2013-03-20
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多