我想用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
答案 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