この質問にはすでに回答があります :複数の行にまたがるパターンを「grep」するにはどうすればよいですか?
(9つの回答)
2年前に閉鎖されました。
Linux
(9つの回答)
2年前に閉鎖されました。
sed
を使用して複数行のパターンマッチングを行うことは可能ですか? 、awk
またはgrep
?たとえば、{
の間のすべての行を取得したいとします。 および}
したがって、一致する必要があります
1. {}
2. {.....}
3. {.....
.....}
最初に使用された質問は<p>
例として。 {
を使用するように質問を編集しました および}
。
承認された回答:
上記のアドバイスには同意しますが、小さなものや完全にアドホックなもの以外のパーサーを取得することをお勧めしますが、中括弧とsedの間の複数行のブロックを一致させることはほとんど不可能です。
これがsedコードのデバッグバージョンです
sed -n '/[{]/,/[}]/{
p
/[}]/a
end of block matching brace
}' *.txt
いくつかのメモ、
- -nは、「処理されたデフォルトの印刷行がない」ことを意味します。
- 「p」は今を意味します 行を印刷します。
- 構成
/[{]/,/[}]/
範囲式です。これは、最初のパターン(/[{]/)
に一致するものが見つかるまでスキャンすることを意味します 次に、2番目のパターン(/[}]/)
が見つかるまでスキャンします。 次に、sedコードの{}の間にあるアクションを実行します。この場合、「p」とデバッグコード。 (ここでは説明していませんが、使用するか、変更するか、最適な方法で取り出してください)。
コードが{、}で区切られたブロックと実際に一致していることが十分に証明されたら、/[}]/ブロックデバッグの終わりを削除できます。
このコードサンプルは、中括弧のペアの内側にないものをスキップします。
上記の他の人が指摘したように、文字列やreg-expsなどに余分な{、}が埋め込まれていると、簡単に混乱します。<強い>または閉じ中括弧が同じ行である場合 、(fred.bearに感謝します)
これがお役に立てば幸いです。