Grep 新行字符不包括在[:空格:]组中

Grep 新行字符不包括在[:空格:]组中,grep,locale,Grep,Locale,使用[:space:]组通过grep执行搜索时,不会检测到新行字符属于该组。你知道为什么会这样,以及如何在[:space:]组中包含新行字符(正确识别制表符和空格)?这有可能是因为在终端中回显时LC_CTYPE变量为空?(使用locale命令时,将其设置为LC_CTYPE=“en_US.UTF-8”) Grep版本:2.25 系统:Ubuntu 16.04双启动 非常感谢任何帮助 Grep分别搜索每一行。你在正则表达式中做什么并不重要;正在搜索的字符串不包含\n。'[:space:]空格字符:在

使用[:space:]组通过grep执行搜索时,不会检测到新行字符属于该组。你知道为什么会这样,以及如何在[:space:]组中包含新行字符(正确识别制表符和空格)?这有可能是因为在终端中回显时LC_CTYPE变量为空?(使用locale命令时,将其设置为LC_CTYPE=“en_US.UTF-8”)

Grep版本:2.25
系统:Ubuntu 16.04双启动

非常感谢任何帮助

Grep分别搜索每一行。你在正则表达式中做什么并不重要;正在搜索的字符串不包含
\n

'[:space:]空格字符:在“C”区域设置中,这是制表符、换行符、垂直制表符、换行符、回车符和空格。有关匹配换行符的更多讨论,请参见用法。这是来自grep手册。我的意思是用a[[:space:]]进行grepping应该同时找到“a\t”行和“a\n”行,不是吗?@koko没有
a\n
\n
是终止每一行的文件,因此如果您有一个像
a\t\na\nxyz\n
这样的三行文件,grep将分别搜索
a\t
a
xyz
。但是显式添加“$”字符是有效的,并且使用扩展符号a([[:空格:]]|$)将捕获上述两行。这是所需的行为?@koko
$
匹配字符串的结尾。由于grep分别匹配每一行,
$
确实匹配每一行的末尾。好的,谢谢您的解释。捕捉文件中字母“a”后跟空格或行尾的情况的最佳方法是什么?您必须使用扩展regexp吗?我试过“a[$[:space:][]”,但没用