Regex Awk-针对子字符串的正则表达式匹配

Regex Awk-针对子字符串的正则表达式匹配,regex,string,awk,Regex,String,Awk,如何使用正则表达式匹配运算符~检查带有substr($x,0,1)的第一个字符是否是从a到L的字母?像这样substr($x,0,1)~/[a-L]/ $ cat file ABC DEF XYZ 123 $ awk 'substr($0,0,1)~/[A-L]/' file ABC DEF 先进的 substr($x, 0, 1) 你最好用 substr($x, 1, 1) 因为awk数组、字符串idx等都是基于1的。gawk既能工作于0又能工作于1(甚至-100),其他awk实现可

如何使用正则表达式匹配运算符
~
检查带有substr($x,0,1)的第一个字符是否是从a到L的字母?

像这样
substr($x,0,1)~/[a-L]/

$ cat file
ABC
DEF
XYZ
123

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

substr($x, 0, 1) 
你最好用

substr($x, 1, 1)
因为awk数组、字符串idx等都是基于1的。gawk既能工作于
0
又能工作于
1
(甚至
-100)
,其他awk实现可能不适用于
0
情况(给您意外的值)


您可以使用正则表达式检查字母范围,或者只将它们与
>进行比较,或者为什么使用substr()而不是
$x~/^[A-L]/
?我不知道,这就是我发布此问题的原因;)然后重新表述你的问题,告诉我们你试图用一小部分有代表性的样本输入和预期输出来做什么。到目前为止,您已经问过我们如何实施一个问题的特定解决方案,但您没有告诉我们问题是什么,也没有要求我们为该问题提供一个好的解决方案。
awk 'BEGIN{s=substr($x,1,1);print (s>="A"&&s<="L")?"YES":"NO"}'
awk 'BEGIN{print ($x~/^[A-L]/)?"YES":"NO"}'