如何使用 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 回答