首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用regex在awk中测试变量?

如何使用regex在awk中测试变量?
EN

Unix & Linux用户
提问于 2021-03-12 10:23:08
回答 1查看 272关注 0票数 0

我想测试一个脚本参数是否只由字母组成。下面是脚本:

代码语言:javascript
复制
 BEGIN {
        VALUE=ARGV[1];
        if (VALUE ~ /[A-Za-z]/) {
           print VALUE " : Ok only letters";
        }
        print VALUE;
}

它似乎将每个字符串与至少一个字母匹配:

代码语言:javascript
复制
tchupy@rasp:~$ awk -f s.awk file 111
value = 111
tchupy@rasp:~$ awk -f s.awk file  @@@
value = @@@
tchupy@rasp:~$ awk -f s.awk file  aaa
aaa : Ok only letters
value = aaa
tchupy@rasp:~$ awk -f s.awk file  1a1
1a1 : Ok only letters
value = 1a1
tchupy@rasp:~$ awk -f s.awk file  a1a
a1a : Ok only letters
value = a1a
tchupy@rasp:~$ awk -f s.awk file  1@1
value = 1@1

我尝试使用match()函数,但在(尝试使用regex时)或附近有一个语法错误。

Thx

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-03-12 10:49:18

如果变量至少包含字符类中的一个字符,则测试将为真。要测试变量是否仅包含字符类中的字符,需要从开头(^)匹配到脚本的末尾:

代码语言:javascript
复制
BEGIN {
    VALUE=ARGV[1];
    if (VALUE ~ /^[A-Za-z]+$/) {
       print VALUE " : Ok only letters";
    }
    print VALUE;
}

或者更简单地说:

代码语言:javascript
复制
BEGIN {
    print ARGV[1] ": " (ARGV[1] ~ /^[A-Za-z]+$/ ? "OK" : "BAD")
}
票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/638916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档