Awk
在兩個模式之間列印行,在每個塊之後暫停直到按鍵
我的
sed
orawk
可以列印兩個圖案之間的線條,但我怎樣才能讓它一一顯示?範例 - 它應該顯示輸出的第一部分,當我按下
Space
它時應該顯示輸出的第二部分,依此類推,直到它顯示了與模式匹配的所有部分。---------------------START HERE-------------------- Server Name : ABC xxxx xxxx xxxx xxxx ---------------------END HERE---------------------- ---------------------START HERE-------------------- Server Name : XYZ YYYY YYYY YYYY ---------------------END HERE--------------------
對於包含上述資訊的文件,我如何逐個顯示資訊,之間有一個中斷/暫停,直到我按下一個鍵來顯示下一個輸出。
我的
sed
命令sed -n '/START/,/END/p' /tmp/output
一次顯示所有內容。
使用
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
顯示下一部分的輸出就足夠了。