2016-09-14 5 views
-2

複数のisc dhcpd設定を1つのコマンドラインで削除しようとしています。sedでマルチラインパターンを削除するには?

私はsedの

My regex looks good

でそれをやろうとしているが、私は私が欠けている何sedコマンド

sed '/subnet 10.5.154.*{((.|\n)*?)}((.|\n)*?)}/d' dhcpd.conf

に使用することはできませんよ?

+1

JavaScriptの正規表現の風味がsedの正規表現の風味と異なっているが。 regexrが一致を示していれば、sedはそうする必要はありません。情報のおかげで –

+0

ありがとうございます。私は、言語間の正規表現のいくつかの味があることを知りませんでした、基本的な、ノーマル、または拡張の概念のみ。正規表現を設定私はネットワークエンジニアであり、一部のルータでは基本正規表現が存在する。 downvoteを理解していない - ここでかなり良いスタートは、stackoverflowで。 – cgasp

+0

POSIXでは、 '.'は改行文字を含む任意の文字にマッチします。また、POSIXの正規表現フレーバは遅延量指定子をサポートしていません。 –

答えて

1

sedは行ごとに動作し、デフォルトではBRE(基本正規表現)構文を使用しますが、2つのパターンを持つ行の範囲を定義することができます(ブロックが空行で終わるという事実を使用するか、閉じた後にインデントを使用する}行を開始し、deleteコマンドを使用します。

ブロックの後に空行があるかどう:

sed '/^subnet 10\.5\.154\.0/,/^$/d' file 

またはラインの開始時に閉じ括弧を使用して:

sed '/^subnet 10\.5\.154\.0/,/^}/d' file 
+0

2番目の「sed」コマンドが希望の結果を出します。ありがとうございました。 – cgasp

関連する問題