2 つの特定の文字列間のテキストの削除

2 つの特定の文字列間のテキストの削除

次のファイルがあります。

mime PI Name: ISHO SUCCESS RATE RT, Value: 95.663826
scr  PI Name: RRC Access Failures due to UU, Value: 0.13394141
prog PI Name: RRC Access Failures due to UU, Value: 0.16077702
sch PI Name: RRC Access Failures due to UU, Value: 0.11781933

PIまでテキストを削除したいです。Value:やってみました。

sed '/<PI>/,/<\/Value:>/d' 

助けが必要ですか?

答え1

PIfrom のすべての項目を空の文字列に置き換えます。Value:

sed 's/PI.*Value://'

答え2

din コマンドを使用すると、行sed全体が削除されます。また、なぜ<andを使用したのかわかりません>。たぶんあなたは単語の境界を表すために使用されていると混同していますか\<?この場合、2種類の単語境界(開始と終了)の目的を知る必要があります。したがって、次のように書くことができます。\>grepsed\b

sed -i 's/\bPI\b.*\bValue:\b//' your_file

堅牢性を高めるために、遅延量子化を使用して、perl最初の発生と最初の発生の間.のテキストのみを削除します。もちろん、これはすべてユースケースによって異なります。PIValue:

perl -pi -e 's{ \b PI \b .*? \b Value: \b}{}x' your_file

答え3

パターン間の複数の行(パターン付きの行を含む)を削除するには、以下のコードを使用してください。

sed "/PI/,/Value:/d" your_file

your_file を直接編集するには:

sed -i "/PI/,/Value:/d" your_file

関連情報