亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用sed或awk打印符合匹配模式的線條

使用sed或awk打印符合匹配模式的線條

使用sed或awk打印符合匹配模式的線條問題:我想直接在包含匹配模式的一行后面打印一行。我的版本sed將不會采用以下語法(它會破壞+1p)這似乎是一個簡單的解決方案:sed -n '/ABC/,+1p' infile我想awk做多行處理會更好,但我不知道怎么做。
查看完整描述

3 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

不要使用“模式”這個詞,因為它是高度模棱兩可的。始終使用“String”或“regexp”(或在shell中使用“globing模式”),無論它的真正意思是什么。

你想要的具體答案是:

awk 'f{print;f=0} /regexp/{f=1}' file

或者專門化在regexp之后的Nth記錄的更通用的解決方案(下面是習語“c”):

awk 'c&&!--c; /regexp/{c=1}' file

以下成語描述了如何選擇給定特定regexp以匹配的一系列記錄:

(A)打印來自某個regexp的所有記錄:

awk '/regexp/{f=1}f' file

(B)在某些正則表達式之后打印所有記錄:

awk 'f;/regexp/{f=1}' file

c)在某些regexp之后打印Nth記錄:

awk 'c&&!--c;/regexp/{c=N}' file

d)在某些regexp之后打印除第N條記錄外的所有記錄:

awk 'c&&!--c{next}/regexp/{c=N}1' file

(E)在某些regexp之后打印N個記錄:

awk 'c&&c--;/regexp/{c=N}' file

(F)打印除N條記錄外的每一條記錄。

awk 'c&&c--{next}/regexp/{c=N}1' file

(G)從某些regexp打印N條記錄:

awk '/regexp/{c=N}c&&c--' file

在適當的情況下,我將變量名從“f”改為“c”,表示“count”,因為這更能表達變量的實際情況。


查看完整回答
反對 回復 2019-06-18
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

是這條線你感興趣的匹配,對吧?在sed中,可以這樣做:

sed -n '/ABC/{n;p}' infile

或者,GREP的A選擇可能就是你要找的。

-A NUM, Print NUM lines of trailing context after matching lines.

例如,給定以下輸入文件:

foo
bar
baz
bash
bongo

您可以使用以下內容:

$ grep -A 1 "bar" file
bar
baz
$ sed -n '/bar/{n;p}' file
baz

希望能幫上忙。


查看完整回答
反對 回復 2019-06-18
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

我需要在模式之后打印所有的行(OK,Ed,REGEX),所以我確定了這一條:

sed -n '/pattern/,$p' # prints all lines after ( and including ) the pattern

但因為我想打印后面的所有線條(并排除圖案)

sed -n '/pattern/,$p' | tail -n+2  # all lines after first occurrence of pattern

我想在你的例子中你可以添加一個head -1最后

sed -n '/pattern/,$p' | tail -n+2 | head -1 # prints line after pattern


查看完整回答
反對 回復 2019-06-18
  • 3 回答
  • 0 關注
  • 727 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號