两种模式(不包括)与SED之间移除线 [英] removing lines between two patterns (not inclusive) with sed
本文介绍了两种模式(不包括)与SED之间移除线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
确定
我知道,这是微不足道的问题,但我怎么可以从两个已知模式/字与字之间的文件中删除行:
样式1结果
垃圾结果
PATTERN2
块引用>获得:
样式1结果
PATTERN2
块引用>和没有人已知良好(简单的书面!)的资源,研究sed的?由于许多明显的例子?
解决方案SED -n'/样式1 / {磷; :一个; N; !/ PATTERN2 / BA;小号/.* \\ n //}; P'inputfile中
说明:
/样式1 / {#如果样式1被发现
p#打印
:一个循环#
N#和积累线路
/ PATTERN2 /!BA#,直到PATTERN2被发现
小号/.* \\ n //#删除之前PATTERN2部分
}
p#打印线(它要么PATTERN2或它的外块)编辑:
SED
的某些版本必须要填鸭式:SED -n -e'/样式1 / {'-e'P'-e':一个'-e'N'-e'!/ PATTERN2 / BA'-e的/.* \\ n //'-e'}'-e'p'inputfile中
Ok
I know that this is trivial question but: How can i remove lines from files that are between two known patterns/words:
pattern1
garbage
pattern2to obtain:
pattern1
pattern2And does anyone known good(simple written!) resources for studying sed?? With many clear examples?
解决方案sed -n '/pattern1/{p; :a; N; /pattern2/!ba; s/.*\n//}; p' inputfile
Explanation:
/pattern1/{ # if pattern1 is found p # print it :a # loop N # and accumulate lines /pattern2/!ba # until pattern2 is found s/.*\n// # delete the part before pattern2 } p # print the line (it's either pattern2 or it's outside the block)
Edit:
Some versions of
sed
have to be spoon-fed:sed -n -e '/pattern1/{' -e 'p' -e ':a' -e 'N' -e '/pattern2/!ba' -e 's/.*\n//' -e '}' -e 'p' inputfile
这篇关于两种模式(不包括)与SED之间移除线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文