iT邦幫忙

0

如何用linux shell sed 擷取檔案中關鍵字的段落

  • 分享至 

  • xImage

有一個問題想請教
如果說我的內容為
123
456
789
123
123
abc
def
ghi
我想找出123~def
也就是最後為
123
abc
def

請問我該如何解?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
ayu
iT邦好手 2 級 ‧ 2019-04-02 13:14:53

pcregrep -M '123\nabc\ndef\n' 檔名
-M 是 --multiline 的意思

0
davidhcefx
iT邦新手 5 級 ‧ 2019-04-05 05:32:23

基本上,sed 是「以行為單位」來運做的[1],
因此當它讀到底下的 abc 時,並不會記得前一行曾讀過了 123。

如果不麻煩的話,其實可以寫一個 while loop,可能會比 sed 還要快,畢竟 sed 也是一行一行讀取的。或者改用 python 或 cpp 來實做。但如果堅持要用 sed 的話:cat file | sed ':a;N;$!ba;s/123\nabc\ndef/Found!/',不過不保證會對,因為 buffer 大小有限。

我要發表回答

立即登入回答