我想删除部分文本:
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
试试这个:
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
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