awk输出到文件

时间:2010-03-17 08:50:56

标签: unix file awk

我需要帮助将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"

如何将打印结果一个接一个地添加到同一文件中的文本文件中?

3 个答案:

答案 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可能是文字名称或   括号表达式;相同   不同语句中的字符串值   表示相同的打开文件。