簡體   English   中英

重擊,選擇包含特定匹配項的文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM