テキストの一部を削除したい:
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