我有一组后面跟着' \'我想要打印到不包含' \'的行。行尾的字符。请注意,xx#yy#每个文件都会更改并且可以重复使用,我希望我的脚本可以打印从match1到' \'行尾。
match1 xx1 xx1 xx1 xx1 \
yy1 yy1 yy1 yy1 \
zz\<1\> zz1 zz1 zz1
xx2 xx2 xx2 xx2 \
...
输出应该是:
match1 xx1 xx1 xx1 xx1 \
yy1 yy1 yy1 yy1 \
zz\<1\> zz1 zz1 zz1
我尽力而为:
sed -n '/match1/,/\\/p' file
但不起作用。 任何帮助或建议都表示赞赏。
答案 0 :(得分:3)
以下命令可以执行您想要的操作:
sed -n '/match1/,/[^\\]$/p' file
在字符类的开头使用^
否定匹配。
在glenn jackman's great comment之后,上述解决方案存在一些问题。由于[^\\]
至少需要一个字符,如果不以\结尾的第一行是空行,则它将无法工作。让我加上他应该是首选的解决方案:
sed -n '/match1/,/\(^\|[^\\]\)$/p' file