Awk - 与子字符串匹配的正则表达式

时间:2013-04-19 15:06:07

标签: regex string awk

如何查看substr($x, 0, 1)的第一个字母是否是从A到L的字母?

2 个答案:

答案 0 :(得分:2)

首先在

substr($x, 0, 1) 

你最好使用

substr($x, 1, 1)

因为awk数组,字符串idx等都是从1开始的。 gawk同时适用于01(甚至-100),其他awk实现可能不适用于0个案例(给您意想不到的值)。

您可以使用正则表达式检查该字母范围,或者只是将它们与> or <进行比较,例如:

awk 'BEGIN{s=substr($x,1,1);print (s>="A"&&s<="L")?"YES":"NO"}'

如果要使用正则表达式进行检查,则不需要substr()函数:

awk 'BEGIN{print ($x~/^[A-L]/)?"YES":"NO"}'

答案 1 :(得分:1)

使用正则表达式匹配运算符~,如substr($x,0,1)~/[A-L]/

$ cat file
ABC
DEF
XYZ
123

$ awk 'substr($0,0,1)~/[A-L]/' file
ABC
DEF