regex - awk 正则表达式中的花括号

标签 regex awk

我试图在 awk 中使用花括号匹配固定数量的数字但我没有结果。

# This outputs nothing
echo "123" | awk '/^[0-9]{3}$/ {print $1;}' 

# This outputs 123
echo "123" | awk '/^[0-9]+$/ {print $1;}' 

我需要做一些特定的事情来使用花括号吗?

最佳答案

Mac OS X awk (BSD awk) 与显示的第一个命令一起使用:

$ echo "123" | /usr/bin/awk '/^[0-9]{3}$/ {print $1;}' 
123
$

GNU awk才不是。添加反斜杠对 GNU 没有帮助 awk .使用选项 --re-interval确实如此,使用 --posix 也是如此.
$ echo "123" | /usr/gnu/bin/awk --re-interval '/^[0-9]{3}$/ {print $1;}' 
123
$ echo "123" | /usr/gnu/bin/awk --posix '/^[0-9]{3}$/ {print $1;}' 
123
$

(我不确定 mawk 1996 年的 1.3.3 来自哪里,但可能是时候为您的机器获取 awk 的更新版本了。)

关于regex - awk 正则表达式中的花括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15590549/

相关文章:

python - 未找到打印搜索的问题

c# - 仅删除逗号前后的空格

python - vim:突出显示Python三引号字符串中的SQL

php - 正则表达式 (preg_split) : how do I split based on a delimiter, 不包括一对引号中的定界符?

linux - 如果换行符是文件中的最后一个字符,如何删除它?

linux - Bash 列相关平均值

bash - 如何在 awk 脚本中使用 shell 变量?

java - 用分隔符分割字符串

awk - 如何使用sed隔离 “ssh-keygen -if”输出中的Linux指纹

linux - 如何使用 awk 从文件中删除一行并按某个字符串过滤