gpt4 book ai didi

regex - awk,字段不匹配但应该匹配

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:45 25 4
gpt4 key购买 nike

我有一个结构为记录列表的文件,其中字段分隔符是\t。我只想提取第二个字段是 1 到 9 之间的数字的记录,但我的 awk 脚本不起作用。awk 脚本是

cat file |awk -v FS="\t" '$2 ~ /[0-9]{1}/ {print $0;}'

或者这个

cat file |awk -v FS="\t" '$2 ~ /.{1}/ {print $0;}'  #because the second fields of my file have  all second fields as number

为什么这些脚本不起作用?正则表达式不是很好的正则表达式吗?

最佳答案

更新

即使使用区间 {1},您仍然会匹配 23 这样的字段,因为 2 匹配单个数字。您真正想要使用的是 anchor 而忘记间隔:

awk '$2 ~ /^[0-9]$/{print}' FS="\t" file

问题是使用区间 {1}awk 低于版本 4 不支持间隔。另一方面,如果您添加以下标志,gawk 将会:--re-interval

试试这个:

awk --re-interval '$2 ~ /[0-9]{1}/{print}' FS="\t" file

其他一些注意事项:

  1. 内置的变量如 FS 可以在最后赋值而不需要 -v
  2. 您可以只使用 print 而不是 print $0 因为这是它的默认行为
  3. cat 的无用使用。 awk 可以将文件作为参数,使用它来代替

关于regex - awk,字段不匹配但应该匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8965789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com