我想测试一个脚本参数是否只由字母组成。下面是脚本:
BEGIN {
VALUE=ARGV[1];
if (VALUE ~ /[A-Za-z]/) {
print VALUE " : Ok only letters";
}
print VALUE;
}它似乎将每个字符串与至少一个字母匹配:
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
发布于 2021-03-12 10:49:18
如果变量至少包含字符类中的一个字符,则测试将为真。要测试变量是否仅包含字符类中的字符,需要从开头(^)匹配到脚本的末尾:
BEGIN {
VALUE=ARGV[1];
if (VALUE ~ /^[A-Za-z]+$/) {
print VALUE " : Ok only letters";
}
print VALUE;
}或者更简单地说:
BEGIN {
print ARGV[1] ": " (ARGV[1] ~ /^[A-Za-z]+$/ ? "OK" : "BAD")
}https://unix.stackexchange.com/questions/638916
复制相似问题