<<"
72306735
">>
<<"
72306735 35623130
30000000
">>
<<"
select * from emp
where id=1
">>
预期输出:
72306735
72306735 35623130
30000000
select * from emp
where id=1
我试着用sed这样的:
sed -n '/<<"/,/">>/p' script.txt
输出 :
<<"
72306735
">>
<<"
72306735 35623130
30000000
">>
<<"
select * from emp
where id=1
">>
请帮助我解决这个问题
谢谢
你差点就吃了。采用
sed -n '/<<"/,/">>/ { //! p; }' script.txt
在//
尝试最近再次尝试正则表达式。如图所示使用时,最近尝试的正则表达式是确定当前行是否在图案范围内的那个正则表达式/<<"/,/">>/
。在范围的第一行中,就是与第一行匹配的模式,从那以后,它将是与最后一行匹配的模式。
实际的结果是,它与范围的开始和结束行匹配,因此//!p
意味着仅在当前行不是其中之一时才打印。
的使用//
不限于{}
块。你也可以写
sed '/<<"/,/">>/!d; //d' script.txt
其中/<<"/,/">>/!d
删除不属于该范围的所有行,并//d
删除边框线,因为//
此时,匹配范围的第一行和最后一行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句