5

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

4

5 回答 5

11

使用grep(and egrep) 时,美元符号 ( $) 匹配行尾,而 carret ( ^) 匹配行首。因此,例如,如果你想匹配包含“fish”这个词并且没有其他字符的行,你可以使用这个:

grep '^fish$'

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

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

$ cat testfile 
one
two;
three.
four:

结果如下:

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

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

于 2012-10-03T15:00:27.270 回答
3

这应该这样做:

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

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

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

于 2012-10-03T11:54:31.860 回答
3

没有-E

grep '\.\|;$' filename
于 2012-10-03T11:55:52.913 回答
2

三种方式:其中任何一种对我有用。

一:

grep '[\.;]$' your_file

二:

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

三:

awk '/[\.;]$/' your_file
于 2012-10-03T12:13:39.213 回答
2

使用 sed :

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

用 awk

awk '/(\.|;)$/'
于 2012-10-03T12:15:02.477 回答