使用 xargs 和 awk 处理多个文件并将处理后的数据写入单独的文件
Process several files with xargs and awk and write the processed data to separate files
我有几个文件想用 awk 处理,然后将 awk 的输出通过管道传输到单独的文件。我想用 awk 处理单个文件并将输出写入文件,但是将它与 find 和 xargs 结合使用对我来说是有问题的。
这是当前命令:
find ./*.data -print0 | xargs -0 -I{} awk '/^00/ {printf "Data: %s"[=10=];}' > {}.processed
这只会创建一个文件,并将 awk 处理的所有数据合并到一个名为
的文件中
"{}.processed"
.
将所有输出数据写入单独文件的正确方法是什么?
文件 "file1.data" 和 "file2.data" 的输出文件名应为:
file1.data.processed
file2.data.processed
为什么不为此使用 FILENAME
awk 内置变量:
awk '/^00/ {printf "Data: %s",[=10=] >(FILENAME".processed")}' $(find ./*.data)
您可以使用 for 循环来处理此任务,而不是使用 xargs
:
for F in `find ./*.data`; do
awk '/^00/ {printf "Data: %s"[=10=];}' "$F" > "$F".processed
done
我有几个文件想用 awk 处理,然后将 awk 的输出通过管道传输到单独的文件。我想用 awk 处理单个文件并将输出写入文件,但是将它与 find 和 xargs 结合使用对我来说是有问题的。
这是当前命令:
find ./*.data -print0 | xargs -0 -I{} awk '/^00/ {printf "Data: %s"[=10=];}' > {}.processed
这只会创建一个文件,并将 awk 处理的所有数据合并到一个名为
的文件中"{}.processed"
.
将所有输出数据写入单独文件的正确方法是什么?
文件 "file1.data" 和 "file2.data" 的输出文件名应为:
file1.data.processed
file2.data.processed
为什么不为此使用 FILENAME
awk 内置变量:
awk '/^00/ {printf "Data: %s",[=10=] >(FILENAME".processed")}' $(find ./*.data)
您可以使用 for 循环来处理此任务,而不是使用 xargs
:
for F in `find ./*.data`; do
awk '/^00/ {printf "Data: %s"[=10=];}' "$F" > "$F".processed
done