我虽然知道 grep,但也许不知道。
我想在以“:”结尾的文件中找到所有行,如果我运行
grep :$ ~/greptester.txt
Run Code Online (Sandbox Code Playgroud)
但令我惊讶的是,它没有给出任何结果。有时我会混淆 '^' 和 '$',不得不猜测哪个是开始,哪个是行尾,但我检查了一下,$ 确实是行尾。
折腾了好久,无意间发现跑步
grep :.$ ~/greptester.txt
Run Code Online (Sandbox Code Playgroud)
确实给出了预期的结果。为什么?
这是文本文件:
test line one
1 line with a colon:
ignore this line
3456 some stuff:
cat: meow; dog: bark; horse: four (4) legs.
goat, 7 elephants
Run Code Online (Sandbox Code Playgroud)
这在 Ubuntu 和带有 Cygwin 的 Windows 机器上都会发生。
您的文件有\r\n(CR+LF) 行结尾(可能是在 Windows 中创建的?),而大多数 UNIX 文件仅以\n(LF)结尾。
因此,在 grep 看到\n后面的:字符之前\r,它必须与.通配符匹配。
| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |