加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 删除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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读