Lax*_*Sam 4 awk regular-expression
我有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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用与我发布的条件相同的条件,则会出现错误。如何添加条件?
ter*_*don 12
您实际上并未展示如何添加正则表达式,因此我猜您使用的是相同的格式:=~ [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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
此外,在 中awk,$符号用于标记字段,而不是变量。So$counter将被评估为 的字段编号counter。如果counter是2,$counter则将是第二个字段的值。而且这-gt也不是 awk 的事情。只需使用>.