正则表达式 – 删除2个匹配模式之间的n行,保持第一个匹配并删除
发布时间:2020-12-14 05:37:11 所属栏目:百科 来源:网络整理
导读:给定文本文件中的数据: string1 EP00 37.45 83.83 savesavesavegibberishgibberishgibberishgibberishgibberishgibberishgibberishgibberishgibberishgibberishgibberishgibberishgibberishstring2gibberishgibberishgibberishgibberishgibberishgibberishg
给定文本文件中的数据:
string1 EP00 37.45 83.83 save save save gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish string2 gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish gibberish 我想使用sed或awk匹配string1和string 2,然后删除string1和前3行之后的所有内容.我想删除string2,但不删除string1.并删除该文件与下一文本之间的一行.所以预期的产量是: string1 EP00 37.45 83.83 save save save 如果这有助于(16),则两个模式之间总有相同数量的行.我想用sed或awk做这个,但只能找出一个脚本来删除两者之间的整个数据块,保留两个字符串: sed '/string1/,/string2/{//!d}' file >> tr.txt 有谁知道如何指定保留string1及其后面的三行,并删除两个模式之间的其余行,包括string2?我想用sed或awk这样做,哪个更容易. 谢谢! 解决方法
你可以使用这个awk:
awk '/^string1/{i=0} /^string1/,/^string2/{i++; if (i<5) print; next}1' file string1 EP00 37.45 83.83 save save save (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |