点击进入后awk命令没有运行

时间:2014-07-30 00:17:52

标签: awk

我有一个类似于以下内容的文本文件:

Question: What is.... ?

Answer:

Question: What is.... ?

Answer:

我目前正在尝试在第二个"Answer"之后插入一些文字。我目前正在使用以下内容:

awk '{
  for (i = 1; i <= NF; i++){    
    if ($i ~ /Answer:/)
       count++
    if (count == 2)
       sub(/Answer:/,"A's",$i)
  }
 }1' lab02.txt > tmp && mv tmp lab02.txt

当我将"Answer:更改为count时,这适用于第一个1。但是,当我按上述方式运行时,命令不会执行。似乎期待更多的产出......?

此外,1中的}1' lab02.txt > tmp && mv tmp lab02.txt是什么意思?

我是shell脚本的新手,所以对此的任何帮助都将非常感谢!

感谢。

2 个答案:

答案 0 :(得分:2)

你的awk命令中间有一个撇号,这会让你的shell解析出来的命令。

它会看到'末尾的}1'作为未完成的新字符串。

你需要从shell中转义awk内部'

将其替换为'\''

答案 1 :(得分:1)

@EtanReisner回答了您的具体问题,但听起来您的脚本应该写成:

$ awk '/Answer:/{ if (++cnt==2) $0 = "A\047s" } 1' file
Question: What is.... ?

Answer:

Question: What is.... ?

A's