2012-03-29 33 views
1

我只想打印符合條件的行:「worde:」和「wordo;」 我到目前爲止:我的sed很接近......但不是那裏,你能幫忙嗎?

sed -n '/\([a-z]*\)\1e:\1o;/p;' 

但它不太工作。 有人可以請完善它,並告訴我究竟它是一個固定版本/我的錯在哪裏? (請注意,沒有大寫字母過,因此爲什麼我沒有理會包括我的首字符範圍內)

感謝堆,

+0

它以什麼方式不起作用?它的結果與你期望的結果有什麼不同? – 2012-03-29 16:41:24

回答

0

我你的問題的解釋是,你要匹配線,同時包含worde:wordo;

sed -n '/worde:/{/wordo;/p}' infile 

-n參數禁止打印模式空間(infile)時,第一正則表達式匹配的sed,則控制流入塊中,如果正則表達式不匹配,則該行是忽略。在塊內部,如果第二個正則表達式匹配,則會打印該行。

0

一種方法使用交替:

sed -n '/word\(e:\|o;\)/ p' infile 
0

是否使用捕捉組的要求?我沒有他們去。

$ sed -n '/[\w]*[oe][:;]/p'

  • [\w]* - 匹配任何單詞字符。 (如果你真的想只[a-z],交換 ,早在)
  • [oe] - 那些字字符必須在eo
  • [:;]結束 - 然後有一個:;
3

這將處理「worde:wordo」的行出現(詞之間沒有):

sed -n '/\([a-z]*\)e:\1o;/p;' 

如果你需要允許的話字符,你需要這樣的事:

sed -n '/\([a-z]*\)e:.*\1o;/p;' 
+1

爲了指出可能不那麼明顯,在'e'之前放下'\ 1' – 2012-03-29 18:02:25

0

這可能會爲你工作:

sed '/^\(.*\)[eE]:\s*\1[oO];/!d' file 
相關問題