2016-03-04 39 views
1

我有幾個文件需要使用awk處理,然後將awk的輸出管道輸出爲單獨的文件。我想用awk處理單個文件並將輸出寫入文件,但將它與find和xargs結合對我來說是有問題的。
這是當前的命令:使用xargs和awk處理多個文件並將處理後的數據寫入單獨的文件

find ./*.data -print0 | xargs -0 -I{} awk '/^00/ {printf "Data: %s"$0;}' > {}.processed 

這僅創建一個文件,並通過所有AWK處理數據組合到名爲單個文件

「{} .processed」


將所有輸出數據寫入單獨文件的正確方法是什麼?

輸出的文件 「file1.data」 和 「file2.data」 的文件名應該是:

file1.data.processed
file2.data.processed

+0

的可能的複製[?如何使用>在xargs的命令(http://stackoverflow.com/questions/845863/how-to-use -in-an-xargs-command) –

回答

1

你爲什麼不使用FILENAME AWK變量的buildin此:

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

這是完美的。我不知道awk實際上可以輸出到文件。我一直認爲它只負責文本處理。謝謝先生7171u – asdflair

+0

沒問題的隊友 – 7171u

0

而不是使用的你可以使用一個for循環來處理這個任務:

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