1

テキストの一部を削除したい:

0
1
test1
a
b
random letter
test2
e
f
g

私は手に入れたい:

0
1
test2
e
f
g

私はsedを使用しようとしました: sed '/test1/,/test2/d'

しかし、それは test2 も削除します 前のテキストが正確にわからない場合、
テキストを削除して保存するにはどうすればよいですかtest2test2

awkまたは使用する必要がありますsed

4

2 に答える 2

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
于 2013-09-12T10:30:14.470 に答える
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
于 2013-09-12T10:26:13.337 に答える