使用正则表达式查找行号

时间:2011-07-09 21:40:18

标签: sed

我正在尝试使用unix sed命令查找与特定正则表达式匹配的行号。我的文件格式在

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

我需要A<20 spaces>

的所有行号

我使用sed -n '/A[ ]{20}/'= <file_name>但它不起作用。如果我手动输入二十个空格就可以了。

有人可以调整上面的命令使其正常工作。

4 个答案:

答案 0 :(得分:5)

表达式中的大括号需要使用反斜杠进行转义:

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

另一种方法是使用-E将正则表达式解释为扩展(现代)正则表达式:

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

或者可能使用grep代替相同的搜索:

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

答案 1 :(得分:1)

正确的语法是/A \{20\}/(而且我无法理解你的语法来自哪里)。

编辑:重复一个空格,而不是A。不是我的一天

答案 2 :(得分:0)

使用-E-r开关进行扩展正则表达式

答案 3 :(得分:0)

只是为了满足内容请求的回答,因为它高度意味着“20个空格”而不是Twenty“”字符,每个人都理解由于sed行示例失败(我猜这是好的,所以其他回复都很好)这个案例)

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