各ブロックの後にキーを押すまで一時停止し、2つのパターン間の線を印刷します。

各ブロックの後にキーを押すまで一時停止し、2つのパターン間の線を印刷します。

sedまたはawk2つのパターン間の線を印刷できますが、1つずつ表示するにはどうすればよいですか?

はい - 出力の最初の部分を表示し、このキーを押すと出力Spaceの2番目の部分が表示され、パターンに一致するすべての部分が表示されるまで続きます。

---------------------START HERE--------------------
Server Name : ABC 
xxxx 
xxxx 
xxxx 
xxxx 
---------------------END HERE---------------------- 

---------------------START HERE--------------------
Server Name : XYZ 
YYYY 
YYYY 
YYYY 
---------------------END HERE-------------------- 

上記の情報を含むファイルの場合は、次の出力を表示するためにキーを押すまで中断/一時停止を使用して情報を1つずつ表示するにはどうすればよいですか?

私のsed注文

sed -n '/START/,/END/p' /tmp/output 

一度にすべてを見せてください。

ベストアンサー1

次のようsedにパターンが見つかったら、強制的に「一時停止」を処理できますEND HERE

sed -n -e '/START HERE/,/END HERE/{p' -e '/END HERE/r /dev/stdin' -e '}' file

またはsedスクリプトとして:

/START HERE/,/END HERE/ {
    p
    /END HERE/ r /dev/stdin
}

これはEND HERE入力のパターンをテストし、標準入力から読み始めます。これによりr、コマンドが完了するまでデータ処理が一時的に停止します。

を押して「一時停止」を解除できますCtrl+D

同じことawk:

awk '/START HERE/,/END HERE/ { print; if (/END HERE/) getline dummy <"/dev/stdin" }' file

ここではgetlineユーザーから入力を受け取るので、 を押すとEnter出力の次の部分が表示されます。

おすすめ記事