我想删除部分文字:
0
1
test1
a
b
random letter
test2
e
f
g
我想得到:
0
1
test2
e
f
g
我尝试过使用sed:
sed '/test1/,/test2/d'
但它也将删除test2
如果我不确切知道test2
之前的文字
test2
我需要使用awk
或sed
答案 0 :(得分:5)
尝试一下:
sed '/test1/,/test2/{/test2/!d}'
用你的例子测试:
kent$ echo "0
1
test1
a
b
random letter
test2
e
f
g"|sed '/test1/,/test2/{/test2/!d}'
0
1
test2
e
f
g
答案 1 :(得分:3)
awk 'BEGIN{p=1}/test1/{p=0}/test2/{p=1}p' your_file
下面测试:
> cat temp
0
1
test1
a
b
random letter
test2
e
f
g
>
> awk 'BEGIN{p=1}/test1/{p=0}/test2/{p=1}p' temp
0
1
test2
e
f
g
>
如果你想在awk中搜索整个单词: 搜索如下:
/\<WORD\>/
或者你也可以去perl:
perl -lne 'BEGIN{$p=1}if(/\btest1\b/){$p=0}if(/\btest2\b/){$p=1}print if $p' your_file