<<"
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
">>
请帮我解决这个问题
由于
答案 0 :(得分:1)
你几乎拥有它。使用
sed -n '/<<"/,/">>/ { //! p; }' script.txt
//
再次尝试最近尝试的正则表达式。如图所示使用时,最近尝试的正则表达式是确定当前行是否是模式范围/<<"/,/">>/
的一部分的正则表达式。在范围的第一行,即与第一行匹配的模式,从那时起,它就是与最后一行匹配的模式。
实际的结果是它匹配范围的起始行和终点行,因此//!p
表示仅在当前行不是其中之一时才打印。
//
的使用不仅限于{}
块。你也可以写
sed '/<<"/,/">>/!d; //d' script.txt
其中/<<"/,/">>/!d
删除不属于范围的所有行,//d
删除边框线,因为此时//
匹配范围的第一行和最后一行