現在、次のテキストブロックを含むテキストファイルで作業しています。
--------------------------------------
Beginning of block
Text
Random Text
keywordA
Text
End of block
--------------------------------------
--------------------------------------
Beginning of block
Text
Random Text
keywordA
Text
End of block
--------------------------------------
--------------------------------------
Beginning of block
Text
Random Text
keywordD
Text
End of block
--------------------------------------
--------------------------------------
Beginning of block
Text
Random Text
keywordd
Text
End of block
--------------------------------------
目的はegrepが特定のキーワードを検出できるようにすることです。だから私は現在、以下を検索しています。
if egrep -wi 'keywordA|KeywordB|keywordC' Report
then
echo "Words found!"
else
echo "No words found!"
fi
sed(たとえば)を使用して、単語が見つかったテキストブロックをコピーするために後続の操作を追加する方法があるかどうか疑問に思います。
この例で予想される出力は次のとおりです。
--------------------------------------
Beginning of block
Text
Random Text
keywordA
Text
End of block
--------------------------------------
--------------------------------------
Beginning of block
Text
Random Text
keywordA
Text
End of block
--------------------------------------
「レポート」ファイルにはこれらのブロックが数十個含まれていますが、すべてキーワードがあるわけではありません。私はこのようなことをする人々に従いたいだけです。(上記の例に示すように)。
ベストアンサー1
魔法命令はとても簡単ですawk
。
awk -v RS="--------------------------------------"
'/keywordA/||/keywordB/||/keywordC/' RS='' infile.txt
次のように予想される出力が得られます。
--------------------------------------
Beginning of block
Text
Random Text
keywordA
Text
End of block
--------------------------------------
--------------------------------------
Beginning of block
Text
Random Text
keywordA
Text
End of block
--------------------------------------