正規表現を使用して1行のテキストファイルを検索する

正規表現を使用して1行のテキストファイルを検索する

私が知っている限り、すべてのUNIXテキスト処理ユーティリティは一度に1行ずつ読み込み、その行で操作を実行します。

興味のある複数のタグを含む1行のテキストを含む巨大なファイルがあります。

ファイルの内容は次のように考えることができます。

A.*B.*Cが発生するたびに、(AとB)と(BとC)の間に2つの文字列を取得したいと思います。この例では、私が望む出力は次のとおりです。

xzxzx

zxxxzzzz

どうすればいいですか?

編集:申し訳ありません。明確に説明できませんでした。 A、B、Cは、正規表現でのみ識別できる長い文字列です。

ベストアンサー1

awk、、、、perlその他の方法を使用すると、興味深いsed答えがたくさん得られると確信しています。以下は、trこの問題を解決する方法を知っている問題に戻す非常に簡単なオプションです。つまり、1行でパターンを見つけることです。

 $ tr 'C' '\n' <test.file | sed -n 's/.*A\(.*\)B\(.*$\)/\1 \2/p'

このtr 'C' '\n'コマンドは、入力のすべての「C」を改行文字に変換します。したがって、AとBの間、Bと行の終わりの間のテキストを出力するコマンドでパイプを接続する必要があります。

A、B、Cが単純な文字ではなく正規表現である場合は、次のことを試してください。

sed -e 's/C/\n/g' < test.file | sed -n 's/.*A\(.*\)B\(.*\)/\1 \2/p'

これは同じ基本的なアイデアを使用しますが、sed改行を生成するために使用されます。

おすすめ記事