我需要帮助将awk打印的内容移动到文本文件中。 这是previous quesion的延续 我必须将所有内容移动到同一个文件中,以便附加。
具体
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"
如何将打印结果一个接一个地添加到同一文件中的文本文件中?
答案 0 :(得分: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脚本。
答案 1 :(得分:3)
很抱歉,没有太多的awk buff,但shell不应该为你处理吗?
awk YOUR_AWK_STUFF_HERE >> appended.file.name
答案 2 :(得分: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可能是文字名称或 括号表达式;相同 不同语句中的字符串值 表示相同的打开文件。