以句号或分号结尾的列表行

时间:2012-10-03 11:53:11

标签: linux unix

如何使用grep或egrep编写命令来显示文件中以分号“;”或句号“。”字符结尾的所有行。

5 个答案:

答案 0 :(得分:8)

使用grep(和egrep)一个美元符号($)匹配一行的结尾,而一个carret(^)匹配一行的开头。因此,例如,如果您想匹配包含“fish”字样的行而不包含其他字符,则可以使用此字符:

grep '^fish$'

使用单引号来包装搜索表达式非常重要,这样bash就不会对它做任何有趣的事。

因此,要回答您的问题,您需要使用搜索模式'[.;]$'来匹配.;字符,后跟行尾字符。我使用它作为示例测试文件:

$ cat testfile 
one
two;
three.
four:

结果如下:

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

如果您还想在行尾添加空格,请使用此模式:'[.;][ \t]*$',它将与.或{{1}之后的任意数量的空格或制表符匹配}。

答案 1 :(得分:2)

这应该这样做:

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

-E开关启用正则表达式模式。表达式只是匹配以分号或句号结尾的行。

注意:我没有测试过这个。

答案 2 :(得分:2)

没有-E

grep '\.\|;$' filename

答案 3 :(得分:2)

使用sed:

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

使用awk

awk '/(\.|;)$/'

答案 4 :(得分:1)

三种方式:其中任何一种都适合我。

之一:

grep '[\.;]$' your_file

2:

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

3:

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