2011-07-09 49 views
0

我正在嘗試使用unix sed命令查找與特定正則表達式匹配的行號。我的文件的模式如下Sed找到具有正則表達式的行號

A<20 spaces> 
<something> 
<something> 
.. 
.. 
A<20 spaces> 
<soemthing> 
<something> 

我需要的A<20 spaces>

我用sed -n '/A[ ]{20}/'= <file_name>中的全部行數字,但它不工作。如果我手動輸入二十個空格,它確實有效。

有人可以調整上述命令,使其工作。

+0

爲什麼不簡單使用'egrep -l「A [] {20}」'? – tonio

回答

1

正確的語法是/A \{20\}/(我不明白你從哪裏得到你的語法)。

編輯:重複一個空格,而不是A。沒有我的日子

+0

它工作完美。不是我的生活。 – venu

+2

@venu:歡迎來到StackOverflow。 「它工作完美(* sic *。)」最好表達[通過點擊答案左側的複選框大綱](http://stackoverflow.com/faq#howtoask),這對您最有幫助。 – Johnsyweb

0

使用-E-r開關擴展的正則表達式

3

你需要逃避你的括號:

% sed -n '/A[ ]\{20\}/=' test.txt 
1 
6 

或者使用-E解釋的正則表達式擴展(現代)定期表情:

% sed -nE '/A[ ]{20}/=' test.txt 
1 
6 

或者只是使用grep

% grep -n 'A[ ]\{20\}' test.txt 
0

只是爲了sur內容的請求被回答,因爲它意味着「20個空格」而不是二十個字符,大家都明白,由於sed行樣本失敗(我猜這是好的,所以其他回覆在這種情況下很好)

sed -n "/<20 spaces>/ =" file_name