2012-10-03 31 views

回答

8

隨着grep(和egrep)美元符號($)的線的端部相匹配,和一個CARRET(^)的線的開頭相匹配。因此,舉例來說,如果你想匹配正好含有單詞「魚」,你可以使用這個沒有其它字符的行:

grep '^fish$' 

它使用單引號來包裝搜索表達式,這樣的bash沒有按」是非常重要的不要做任何有趣的事情。

因此,要回答您的問題,您需要使用搜索模式'[.;]$'來匹配.;字符,後跟字符行尾。我用這作爲一個例子測試文件:

$ cat testfile 
one 
two; 
three. 
four: 

這裏是結果:

$ grep '[.;]$' testfile 
two; 
three. 

如果您還想允許空格在該行的末尾,那麼使用這種模式:'[.;][ \t]*$'這將與.;之後的任意數量的空格或製表符匹配。

2

這應做到:

$ grep -E '(;|\.)$' 

-E開關啓用正則表達式模式。該表達式簡單地匹配以分號或句點結尾的行。

注:我沒有測試過這個。

2

沒有-E

grep '\.\|;$' filename 
1

三種方式:任何一個爲我工作。

之一:

grep '[\.;]$' your_file 

二:

awk '/\.$/ || /;$/' your_file 

三:

awk '/[\.;]$/' your_file 
+1

只是關於正則表達式的一個小注:在'[]'的內部,一個句點沒有特別的含義,所以沒有必要用反斜槓轉義它。 – aqn

2

隨着SED:

sed -rn '/(\.|;)$/p' 

隨着AWK

awk '/(\.|;)$/' 
相關問題