簡體   English   中英

兩個字符串之間的grep if中間linux模式

[英]grep between two strings if pattern in the middle linux

我只想在兩個字符串之間使用grep進行編碼。 例如,在此文本中:第一個想要的字符串是Start,第二個是END,並且模式在新行中分別是1 2 3。

Start
abc
abc
1
2
3
abc
END
bla
bla
Start
abc
abc
1
2
4
abc
END
bla
bla
Start
abc
abc
1
2
3
abc
abc
END

結果應該是:

Start
abc
abc
1
2
3
abc
END

Start
abc
abc
1
2
3
abc
abc
END

謝謝!

sed -ne '/Start/{:a;N;/END/!b a;/\n1\n2\n3\n/p}'

逐行:

我們只需要以“開始”開頭的文本:

sed -ne '/Start/{

我們找到了'開始',現在將所有內容加到'END'到模式空間;

設置名為“ a”的標簽:

         :a

在模式空間中添加下一行:

         N

如果找不到'END'-跳至'a'

         /END/!b a

現在檢查是否有包含1 2 3的所需圖案並打印

它們將以'\\ n'分隔,因為它們在單獨的行中

         /\n1\n2\n3\n/p
         }'

grep不適合,請改用sed

sed -n "/Start/,/END/p" input.txt

應該管用。 我假設在文件input.txt中輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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