egrep行以

时间:2018-10-23 05:31:40

标签: regex linux

$ cat file
c f t e, u y r s p  I y
p A w p d. R i
G e w o a l n o v s.
P G e a o c f s p
k e i c w a p p e.

$ od -c file
0000000   c       f       t       e   ,       u       y       r       s
0000020       p           I       y  \r  \n   p       A       w       p
0000040       d   .       R       i  \r  \n   G       e       w       o
0000060       a       l       n       o       v       s   .  \r  \n   P
0000100       G       e       a       o       c       f       s       p
0000120  \r  \n   k       e       i       c       w       a       p
0000140   p       e   .  \r  \n
0000146

我尝试使用egrep命令对所有以结尾的行进行grep。 但是,我无法做到!

例如:

$ egrep '.*\.' file
p A w p d. R i
G e w o a l n o v s.
k e i c w a p p e.

它没有给我正确的输出!

也尝试使用$来固定点,\ r和\ n,但它们都不起作用。 任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:0)

您应该开始以Unix格式转换文件:

dos2unix file

然后您可以简单地使用以下说明:

egrep "[.]$" file

答案 1 :(得分:-1)

您的文件为DOS格式(回车符/换行符结尾)。要么先将其转换为Unix格式,然后使用

egrep '\.$'

或保留文件不变并搜索文字回车符

egrep $'\\.\r$'

(使用bash欺骗,因为grep无法理解\r)。

egrep '.*\.'仅查找任何地方包含.的所有行。