sedを使用して、末尾のない出力を作成します\
。
sed -e ':begin;/\\$/{N;bbegin};s/\\\n//g' your_file
次に、それをgrepできます。
sed -e ':begin;/\\$/{N;bbegin};s/\\\n//g' your_file | grep your_pattern
これはすべてsedで行うこともできます。
sed -n -e ':begin;/\\$/{N;bbegin};s/\\\n//g;/your_pattern/p' your_file
更新:
上記を説明するには:
:begin
コマンドで分岐(goto)できるタグを設定しb
ます。
/\\$/{N;bbegin}
\
現在の行が( )で終わっている場合は/\\$/
、次の行をバッファ(N
)に追加し、開始()に進みますbbegin
。
- 次に、行が。で終わっていない場合は、
\
すべての\
と改行(the
s / \\ n // g`)を削除します。
- 次に、
-n
オプションは、スクリプトの最後に行を出力するようにsednoに指示します。
/your_pattern/p
一致する場合は行を出力しyour_pattern
ます。
UPDATE2:
さらに良い方法で、ファイルの元の行を表示することもできます。
sed -n -e ':begin;/\\$/{N;bbegin};h;s/\\\n//g;/your_pattern/{g;p}' your_file
これは、 \
と改行を削除する前に、データをホールドスペース(h
)に保存し、行が一致する場合は、保存されたデータを印刷します(g
ホールドスペースを印刷されるパターンスペースにコピーします)。