如何使用grep或egrep编写命令来显示文件中以分号“;”或句号“。”字符结尾的所有行。
答案 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