使用正则表达式awk匹配整个记录

时间:2008-12-06 04:00:39

标签: awk gawk

使用Awk我希望使用正则表达式匹配整个记录。默认情况下,正则表达式匹配是针对记录的一部分。

理想的解决方案是:

  • 对于所有字段都是通用的,无论使用哪个字段分隔符。
  • 不将整个输入视为单个字段,并使用字符串函数手动解析它。
  • 以一般方式工作,而不是以gawk为例。

然而,只要他们使用Awk而不调用外部程序,任何和所有解决方案都会引起关注。

一个例子,我有:

$ ls
indata.txt  t1.awk
$ cat indata.txt 
a1010_
1010_
1010_b
$ cat t1.awk 
/[01]*_[01]*/ { print $0 }

我明白了:

$ awk -f t1.awk indata.txt
a1010_
1010_
1010_b

这是我寻求的结果:

$ awk -f t1.awk indata.txt
1010_

2 个答案:

答案 0 :(得分:4)

您只需要在正则表达式中添加开始和结束锚点:

/^[01]*_[01]*$/ { print $0 }

答案 1 :(得分:2)

$ gawk '/^[01]*_[01]*$/' indata.txt
1010_