sedを使用して、パターンで始まりセミコロン(;
)で終わるコード(段落)の一部を削除したいと考えています。sedを使用してコードパターンを削除しますか?
は今、私は私ではない区切り文字としてではなく、パターンとしてセミコロンを使用する方法が混乱している改行で
sed -e '/./{H;$!d;}' -e 'x;/Pattern/!d'
を分離段落を削除するには、例に出くわしました。おかげさまで
sedを使用して、パターンで始まりセミコロン(;
)で終わるコード(段落)の一部を削除したいと考えています。sedを使用してコードパターンを削除しますか?
は今、私は私ではない区切り文字としてではなく、パターンとしてセミコロンを使用する方法が混乱している改行で
sed -e '/./{H;$!d;}' -e 'x;/Pattern/!d'
を分離段落を削除するには、例に出くわしました。おかげさまで
その他のオプションは、アドレス範囲のGNU拡張を使用することです。
次の例では、パターンで始まる行のすべてをセミコロンで終わるまで削除します。過酷なのコメントを
sed '/pattern/,/;$/ d' infile
EDIT:例えば、データやEXPをご提示ください
/^\s*LOG\s*(.*;\s*$/ d # Delete line if begins with 'LOG' and ends with semicolon.
/^\s*LOG/,/;\s*$/ d # Delete range of lines between one that begins with LOG and
# other that ends with semicolon.
これはあなたのために働くかもしれない:
cat <<! >file
> a
> b
> ;
> x
> y
> ;
> !
sed '/^[^;]*$/{H;$!d};x;s/;//;/x/!d' file
x
y
説明:任意の行については
;
ではありません、それ/^[^;]*$/
x
;
s/;//
x
)を削除し、見つからない場合は削除します。{H;$!d}
/^$/
空またはファイルの最後の行である場合PS /x/!d
NBこれにより、任意のパターン/x/
が検索され、開始パターンの使用/^x/
が見つかります。
EDIT:
あなたのデータと予想される結果を見た後、これはあなたのために働く可能性があります
sed '/^\s*LOG(.*);/d;/^\s*LOG(/,/);/d' file
ありがとうございます。それは私の疑いを解決する。 – Harsh
:
説明:
は、次の
sed
のコマンドを試してみてください結果を示します。 – potongはい、入力してください、http://pastebin.com/hHXJjSS – Harsh