![如何 grep 空格排除换行符?](https://linux22.com/image/65697/%E5%A6%82%E4%BD%95%20grep%20%E7%A9%BA%E6%A0%BC%E6%8E%92%E9%99%A4%E6%8D%A2%E8%A1%8C%E7%AC%A6%EF%BC%9F.png)
今天我需要检查文件的哪些行包含尾随空格。我想出了一个解决方案:
grep -Enr --color "\s+$" ./
除了那些包含非 Unix 换行符的行之外,这种方法效果很好。
这些换行符将被视为 的有效匹配\s
。
如何在 OSX 中排除它们grep
?
答案1
假设您的意思是您不想 match \r
,您可以只指定您在制表符或空格之后,而不是其他内容:
grep -P '[\t ]$' file
由于您使用的是 OSX,因此您grep
不会有-P
,因此您可以尝试:
grep -E $'\t'"| $" file
或者,您可以使用 POSIX 字符类:
grep '[[:blank:]]$' file
如 中所解释的man wctype
,[[:blank:]]
字符类“实现 isblank(3) 分类函数”,并且如 中所解释的man isblank
,即:
isblank()
checks for a blank character; that is, a space or a tab.
最后,您还可以使用另一个工具:
sed -n '/[\t ]$/p' file
perl -ne 'print if /[\t ]$/' file