我有一个类似于以下内容的文本文件:
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脚本的新手,所以对此的任何帮助都将非常感谢!
感谢。
答案 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