AWK 正则表达式中的简单空格检查不起作用

Jed*_*olf 3 regex awk

我有一个 AWK 脚本,它逐行遍历文件并对其找到的内容执行各种操作,这些操作都工作正常。最近发现有些行需要忽略,全部遵循格式

        FOO_.....
Run Code Online (Sandbox Code Playgroud)

所以我需要匹配空格FOO_。还有一些我不想匹配的行

        BAR_...  FOO_...
Run Code Online (Sandbox Code Playgroud)

所以比赛需要从比赛开始。这一切应该很容易,我很快就设置好了

if($0 ~ /^\s*FOO_/)
{
    continue;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是上面的方法没有起作用。我尝试了很多检查,直到我终于能够让它发挥作用

if($0 ~ /^ *\t*FOO_/)
{
    continue;
}
Run Code Online (Sandbox Code Playgroud)

因此,由于某种原因\s*无法正确匹配空白,但是*\t*(一个或多个空格,一个或多个制表符)确实有效。第二个有效意味着要匹配的所有内容都是空格或制表符,它们都应该被覆盖在下面,\s所以我真的不确定为什么它\s不起作用。

我可以让它与其他选项一起使用,但它并不理想,我只是好奇什么可能导致这个问题。

Ed *_*ton 6

\s是 POSIX 字符类的简写[[:space:]],仅适用于某些 awks。听起来您使用的 awk 不是其中之一。