一致が見つかり、grep -e
その一致のすべての行を別の一致として再度印刷したいとします----
。たとえば。
これは可能ですか、それともこれを行うには他のコマンドや他のものを使用する必要がありますかawk
?
たとえば、次のファイルがあるとします。
----
Ticket Number: 5465415312
Software Services
Notepad
Text
Description:
My Notepad won't type text.
出力は次のようになります。
----
Ticket Number: 5465415312
Software Services
もう一度一致します----
。Software Services
答え1
sed -n '/----/,/Software Services/{p;/Software Services/q}' file
出力:
---- チケット番号:5465415312 ソフトウェアサービス
答え2
以下を使用してawk
これを行う簡単な方法は次のとおりです。
awk '/^----$/,/^Software Services$/' file
長くバイパス的なアプローチ:
awk '/^----$/ { lines = "" }
{ lines = (lines == "" ? $0 : lines ORS $0) }
/^Software Services$/ { print lines }' file
つまり、lines
4つのダッシュラインを押すたびに保存された文字列が消去されます。これにより、現在の行が常に追加され、入力データで「トリガ」行が見つかると、lines
何が印刷されます。lines