如何使用 grep 或 egrep 编写命令以显示文件中以分号“;”结尾的所有行 或句号“.” 特点。
27251 次
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 回答