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