複数のisc dhcpd設定を1つのコマンドラインで削除しようとしています。sedでマルチラインパターンを削除するには?
私はsedの
でそれをやろうとしているが、私は私が欠けている何sedコマンド
sed '/subnet 10.5.154.*{((.|\n)*?)}((.|\n)*?)}/d' dhcpd.conf
に使用することはできませんよ?
複数のisc dhcpd設定を1つのコマンドラインで削除しようとしています。sedでマルチラインパターンを削除するには?
私はsedの
でそれをやろうとしているが、私は私が欠けている何sedコマンド
sed '/subnet 10.5.154.*{((.|\n)*?)}((.|\n)*?)}/d' dhcpd.conf
に使用することはできませんよ?
sedは行ごとに動作し、デフォルトではBRE(基本正規表現)構文を使用しますが、2つのパターンを持つ行の範囲を定義することができます(ブロックが空行で終わるという事実を使用するか、閉じた後にインデントを使用する}行を開始し、deleteコマンドを使用します。
ブロックの後に空行があるかどう:
sed '/^subnet 10\.5\.154\.0/,/^$/d' file
またはラインの開始時に閉じ括弧を使用して:
sed '/^subnet 10\.5\.154\.0/,/^}/d' file
2番目の「sed」コマンドが希望の結果を出します。ありがとうございました。 – cgasp
JavaScriptの正規表現の風味がsedの正規表現の風味と異なっているが。 regexrが一致を示していれば、sedはそうする必要はありません。情報のおかげで –
ありがとうございます。私は、言語間の正規表現のいくつかの味があることを知りませんでした、基本的な、ノーマル、または拡張の概念のみ。正規表現を設定私はネットワークエンジニアであり、一部のルータでは基本正規表現が存在する。 downvoteを理解していない - ここでかなり良いスタートは、stackoverflowで。 – cgasp
POSIXでは、 '.'は改行文字を含む任意の文字にマッチします。また、POSIXの正規表現フレーバは遅延量指定子をサポートしていません。 –