如何 grep 空格排除换行符?

如何 grep 空格排除换行符?

今天我需要检查文件的哪些行包含尾随空格。我想出了一个解决方案:

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 

相关内容