2010-03-17 176 views
1

我需要將awk打印的內容移動到文本文件的幫助。 這是previous quesion 的延續我必須將所有內容移動到同一文件中,以便追加。將awk輸出到文件

具體地說

nawk -v file="$FILE" 'BEGIN{RS=";"} 
    /select/{ gsub(/.*select/,"select");gsub(/\n+/,"");print file,$0;} 
    /update/{ gsub(/.*update/,"update");gsub(/\n+/,"");print file,$0;} 
    /insert/{ gsub(/.*insert/,"insert");gsub(/\n+/,"");print file,$0;} 
    ' "$FILE" 

如何獲得的打印結果到一個文本文件中附加一個接一個地在同一個文件後?

回答

4

當使用shell時,I/O重定向是非常基本的。如果要附加行,請使用>>。例如:

nawk -v file="$FILE" 'BEGIN{RS=";"} 
    /select/{ gsub(/.*select/,"select");gsub(/\n+/,"");print file,$0;} 
    /update/{ gsub(/.*update/,"update");gsub(/\n+/,"");print file,$0;} 
    /insert/{ gsub(/.*insert/,"insert");gsub(/\n+/,"");print file,$0;} 
    ' "$FILE" >> newfile 

如果你還沒有,請花時間閱讀一下shell腳本。

+0

雅非常感謝 – Harish 2010-03-17 10:52:12

3

對不起,awk buff不是很多,但不應該爲你處理shell嗎?

awk YOUR_AWK_STUFF_HERE >> appended.file.name 
2

其他答案建議shell重定向。實際上,awk允許重定向作爲print語句的一部分。

nawk -v file="$FILE" 'BEGIN{RS=";"} 
     /select/{ gsub(/.*select/,"select");gsub(/\n+/,"");print file,$0 >> results.txt;} 
     /update/{ gsub(/.*update/,"update");gsub(/\n+/,"");print file,$0 >> results.txt;} 
     /insert/{ gsub(/.*insert/,"insert");gsub(/\n+/,"");print file,$0 >> results.txt;} 
     ' "$FILE" 

awk man page

print語句打印其 參數上一個文件的標準輸出(或 如果>文件或文件>>是 存在或在管道上,如果| cmd爲 ),由當前的 輸出字段分隔符分隔,並由輸出記錄分隔符終止 。文件 和cmd可以是文字名稱或 括號表達式;相同的 不同語句中的字符串值 表示相同的打開文件。