我怎样才能使用grep或egrep来编写一个命令来显示文件中以分号“;”或句号“。”结尾的所有行。
用grep
(和egrep
)一个美元符号( $
)匹配一行的结尾,并且一个carret( ^
)匹配一行的开始。 所以,例如,如果你想匹配包含“fish”这个单词的行,而没有其他字符,你可以使用这个:
grep '^fish$'
使用单引号来包装搜索表达式是很重要的,这样bash不会对它做任何有趣的事情。
所以,要回答你的问题,你需要使用搜索模式'[.;]$'
来匹配一个.
或;
字符后跟行尾字符。 我用这个作为例子测试文件:
$ cat testfile one two; three. four:
结果如下:
$ grep '[.;]$' testfile two; three.
如果您还想在行尾添加空格,则使用以下模式: '[.;][ \t]*$'
,它将与任意数量的空格或制表符匹配.
或;
。
这应该做到这一点:
$ grep -E '(;|\.)$'
-E
开关启用正则表达式模式。 该表达式简单地匹配以分号或句点结尾的行。
注意:我没有测试过这个。
没有-E
:
grep '\.\|;$' filename
用sed:
sed -rn '/(\.|;)$/p'
用awk
awk '/(\.|;)$/'
三种方式:这些都为我工作。
一:
grep '[\.;]$' your_file
二:
awk '/\.$/ || /;$/' your_file
三:
awk '/[\.;]$/' your_file