grep 命令的行为不明确[已关闭]

问题描述 投票:0回答:1

我正在 bash 中尝试 grep 命令,并遇到了这个命令,但我不太理解它的行为:

grep -E '^[[:space:]]*([[:alnum:]].)+' f3

这里,f3包含

man bash
的内容。该命令只是从每行的开头获取一些随机数量的单词。我的假设是,在遇到非字母数字字符之前,它实际上会在行中获取一些单词,而且我不明白为什么这种行为不是这样。

regex bash grep
1个回答
0
投票

你的正则表达式可以通过它的各个部分来解释:

  • ^
    行首
  • [[:space:]]*
    零个或多个空格字符(因此空格也无效)
  • ([[:alnum:]].)+
    字母数字字符后跟 任何 字符,至少重复一次。可能的匹配:“ab”、“a1”、“abba”、“a!1#”。
如果在行中至少找到一个匹配项,默认情况下,

grep
将打印整行。如果您只想打印该行的匹配部分,请指定
-o
--only-matching

© www.soinside.com 2019 - 2024. All rights reserved.