我有awk
如下脚本文件。我需要在if
语句中添加另一个条件来检查字符串是否至少包含一个字母。如何在当前if
语句中添加额外条件?
所需的正则表达式条件:[[ "$1" =~ [A-Za-z] ]]
BEGIN { FS = ";"; counter=0}
{
if ((length($1) != 10 && length($1) != 12))
{
counter++
print counter, $1;
if ($counter -gt 2){
print "Invalid input file";
exit;
}
}
}
如果我使用我发布的相同条件,我会收到错误。如何添加条件?
答案1
您实际上并没有展示如何添加正则表达式,所以我猜测您正在使用相同的格式:=~ [A-Za-z]
。那是行不通的。每种语言都有自己的正则表达式匹配语法。在 中awk
,格式为$target ~ /$regex/
,所以$1 ~ /[A-Za-z]/
。
BEGIN { FS = ";"; counter=0}
{
if (length($1) != 10 && length($1) != 12 && $1 ~ /[A-Za-z]/)
{
counter++
print counter, $1;
if (counter > 2){
print "Invalid input file";
exit;
}
}
}
另外,在 中awk
,$
符号用于标记字段, 不是变量。因此$counter
将被评估为 的字段号counter
。如果counter
是2
,则将$counter
是第二个字段的值。而且这-gt
也不是 awk 的事情。只需使用>
.