处理 grep 中的空格

处理 grep 中的空格

我正在尝试弄清楚如何处理中的空格grep。如何判断grep是否找到包含空格或制表符的字符串?手册没有告诉我任何事情。\s似乎对空格有效,\S似乎对非空格也有效,但它包括所有空格字符(空格和制表符),如果我将其放在括号中,将反斜杠和视为\s单独的字符,它就不起作用。

答案1

你确定吗?

$ 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.

如图所示,ie\s匹配了空格和制表符——我添加了“a”和“b”只是为了突出显示它。

你得到了什么?

答案2

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

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

相关内容