【发布时间】:2017-12-09 11:27:40
【问题描述】:
我正在尝试使用 awk 来提取两个模式之间的线条,但由于第二个模式涉及多个 $$$$ 符号,我无法正确保护 $
输入是:
Name1
iii
iii
$$$$
Name2
ii
ooo
ppp
$$$$
Name3
pp
oo
ii
uu
$$$$
想要的输出
Name2
ii
ooo
ppp
$$$$
我尝试过这样的事情:
awk 'BEGIN {RS="\\$\\$\\$\\$\n"; FS="\n"} $1==Name2 {print $0; print "$$$$"}' inputfile
我也尝试过类似的东西
awk '/^Name2/,/\\$\\$\\$\\$\\/' input
我尝试了许多不同的 $ 保护措施,但我做错了,要么没有打印,要么打印了整个文件
非常感谢您的建议
【问题讨论】:
-
我在每个 $$$$ 后面加上一个 return 并尝试了类似 awk 'BEGIN {RS="\\$\\$\\$\\$\n"; FS="\n"} $1==Name2 {打印 $0;打印“$$$$”}'
-
您可以将您的代码添加到问题中吗?
-
该代码的实际输出是什么?
-
使用 GNU grep:
grep -Poz '^Name2(\n.*?)*\$\$\$\$' file
标签: awk