在sh shell脚本中。
给定文本文件中的数据:
string1
string2 gibberish
gibberish
string3 gibberish
string4
您如何使用awk或sed删除
string2
(包括)和string3
(不包括string3
)之间的所有行?最后以:
string1
string3
string4
最佳答案
你可以试试看“string2”之前的任何内容都不会被删除。
awk 'BEGIN{f=0}
{
match($0,"string2")
if(RSTART){
print substr($0,1,RSTART-1)
f=1
next
}
match($0,"string3")
if(RSTART){
$0=substr($0,RSTART)
f=0
}
}
f==0{print}
' file
输出
$ cat file
string1 blah blah
text before string2 junk
gibberish
gibberis string3 text here
string4
$ ./shell.sh
string1 blah blah
text before
string3 text here
string4