我在Windows中创建了一个.txt文件,现在应该在Linux中编辑。我希望将一行的结尾与grep匹配,假设我要找到的行的内容是文件bar
中的“foo bar”。然后我发出命令grep 'r$' bar
,没有产生输出。
在Windows中给出一个新行包含'\ r \ n',与Linux / Unix不同,只有一个'\ n',我认为必须有一些与此有关的微妙内容。然后我用dos2unix
转换文件,瞧,它可以工作。
我的问题是如何在不转换原始文件的情况下匹配内容?
任何建议都将受到高度赞赏。
谢谢和最诚挚的问候。
答案 0 :(得分:7)
如果你的grep支持-P
(perl-regexp),那么匹配一个CRLF:
grep -P '\r$' file
或:
grep Ctrl + V Ctrl + M file
( Ctrl + V Ctrl + M 将产生^M
)
答案 1 :(得分:6)
使用匹配两个行结尾的模式:r\r?\n
答案 2 :(得分:-1)
试一试awk
awk '/r$/' RS='\r\n' bar
或
awk '/r\r$/' bar
答案 3 :(得分:-1)
我在Linux的Windows子系统(WSL)中有一个类似的问题,在Ubuntu上运行GNU bash(v4.3.48)。上面的建议对我都不起作用,但是以下建议对我有用(感谢@phuclv提示使用android:fontFamily="@font/cherry_swash"
而不是 Ctrl + V Ctrl + M )
\015
我想从grep -Prno "TOKEN[^\015\012]*" *
到行尾匹配,然后又重新获得空白。因此,我尝试匹配TOKEN
之后的所有非回车符(\015
)和非换行符(\012
)。