[英]Bash, selecting text surrounded by specific matches
我需要做的是打印出在特定比賽之后開始並在另一場比賽之前結束的文本。
假設我有一個很大的輸出,我只需要打印在'$$$$$$$$$$'行之后到'((((((((文件可能沒有'((((((((((')line,在這種情況下,我仍然需要'$$$$$$$$$$$$'之后的文本,直到輸出結束。
我該怎么做?
您可以使用sed
:
sed -e '/\$\{10\}/,/(\{9\}/!d' inputfile
要排除邊界線,您必須進行一些編程:
sed -ne '/\$\{10\}/ {n;b c}; d;:c {/(\{9\}/ {d};p;n;b c}' inputfile
你可以使用awk
awk '/START/{f=1;next} /END/{f=0} f' file
您可以將start
stop
設置為您喜歡的。
貓文件
test
$$$$$$$$$$
more
data
(((((((((
stop
awk '/\$\$\$\$\$\$\$\$\$\$/{f=1;next} /\(\(\(\(\(\(\(\(\(/{f=0} f' t
more
data
由於$
和(
是特殊字符,因此需要對其進行轉義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.