在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

10-08 02:09