处理 grep 中的空格

MYV*_*MYV 7 linux unix grep

我试图弄清楚如何处理grep. 如何判断grep查找包含空格或制表符的字符串?手册没有告诉我什么。\s似乎适用于空白,\S似乎适用于非空白,但它包括所有空白字符(空格和制表符),如果我将它放在括号中,将反斜杠和\s视为单独的字符,则它不起作用。

xpt*_*xpt 7

你确定吗?

$ printf "a \tb\na b\na\tb" | grep '.\s*.'
a       b
a b
a       b

$ grep -V
grep (GNU grep) 2.14
Copyright (C) 2012 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)

即,如图所示,\s匹配了空格和制表符——我包含了 'a' 和 'b' 只是为了突出显示它。

你得到了什么?


Sha*_*arG 5

根据我的经验,grep 最适合 POSIX 字符类 - 例如查找 [[:space:]]。我在一些程序中广泛使用 grep 来验证用户输入,并且如果我坚持使用 POSIX 类,则从未遇到过问题。

然而,正如评论者所指出的,你的问题并不完全清楚。