Обновление :
Условия могут комбинироваться:
($45 ~ /^".+"$/) && (length($45) <= 2502)
до ($45~/^".{1,2500}"$/)
.
($45 ~ /^".+"|""$/) && (length($45) <= 2502)
до ($45~/^".{0,2500}"$/)
.
Также, есливнутри кавычек нет (и должно быть так), точнее: ($45~/^"[^"]{1,2500}"$/)
и ($45~/^"[^"]{0,2500}"$/)
.
Таким образом, вы можете выполнить проверку следующим образом:
awk '
$44 == "B" && ($45~/^"[^"]{1,2500}"$/) {print "45th field invalid-HEADER-FILE";} # <-- You can add next inside, after the semicolon, if there are no other codes need to execute.
$44 != "B" && ($45~/^"[^"]{0,2500}"$/) {print "45th field invalid-HEADER-FILE";}
'
Поскольку она просто равнаили нет, так что просто AND
различные условия $44 == "B"
и $44 != "B"
для других условий будут служить вашим потребностям.
Или, поместите их все в основной блок и правильно процитируйте их, как это:
awk '
{
if ($44 == "B") {
if ($45~/^"[^"]{1,2500}"$/) {
print "45th field invalid-HEADER-FILE";
}
} else {
if ($45~/^"[^"]{0,2500}"$/) {
print "45th field invalid-HEADER-FILE";
}
}
}'
При правильном цитировании и отступе вы можете четко видеть структуру.
Кстати, вы можете изменить length($45) <= 2502
на length($45) < 2503
для краткости, поскольку length
возвращаетцелое число.