2012-12-18 82 views
4

只有在sed(Linux流編輯器)中存在匹配時,如何打印(特定)行?假設我有第三行,只有符合匹配標準纔打印;我怎樣才能打印這個?只有在sed中匹配時纔打印特定行號

我管道命令的輸出sed,並希望不要再使用sed的輸出管sed

| sed -ne ''"$currline"'p' | sed -n '/state/p'` 

而且,我分配輸出與反引號的變量。


鑑於輸入A和B,以及搜索模式state,輸出爲A應是行3 stateless(注意圖3是數據的一部分),和對於B應該是什麼:

Input A    Input B 
1 state    1 state 
2 statement   2 statement 
3 stateless   3 statless 
4 stated    4 stated 
5 estate    5 estate 
+2

任何違反'grep'? – jaudette

+3

請發佈預期產出示例 –

+0

您希望將行或行數作爲輸出?這並不明確 –

回答

2

隨着

awk 'NR==3 && /pattern/{print;exit}' 

注意

  • 模式regex
  • exit避免解析整個文件,
3

據我瞭解,你要匹配兩個指標分析,具體的行號的模式。您可以在一個sed命令中實現它。

假設infile與內容:

one 
two 
three 
four 
five 

如果你想打印第四行,如果它匹配ur,用途:

sed -ne '4 { /ur/ { p; q } }' infile 

國債收益率:

four 
5
sed -n '3{/state/p;}' $file 

3匹配線3;第3行的行爲是'如果您發現/state/,打印'; -n阻止一般打印行。

此外,你應該避免反引號;最好使用var=$(cmd1 | cmd2)表示法,而不是var=`cmd1 | cmd2`表示法。

+0

輝煌,我只是爲此而尋找。非常感謝回答,我希望OP選擇你的答案。 – C2H5OH

1

這可能爲你工作(GNU SED):

sed '3!d;/state/q;Q' file 

sed -ne '3!b' -e '/state/p' -e 'q' file 
2

sed的是簡單的換人在一行上一個很好的工具,但爲別的只用awk:

awk 'NR==3 && /state/' 
相關問題