Валидатор, использующий группу регулярных выражений awk [: alnum:], не работает должным образом - PullRequest
0 голосов
/ 11 февраля 2019

В настоящее время я пишу CSV-валидатор с использованием awk.Вот пример кода:

awk 'BEGIN{FS=OFS=","} NF!=17{print "not enough fields"; exit}
!($1~/[[:alnum:]]$/) {print "1st field invalid"; exit}' npp_test.cs

Однако в разделе alnum не будут приниматься как буквенные, так и числовые символы.

Поэтому, если для данных задано значение "t", программа завершит работу.и если данные равны «1», то же самое.Однако, если это «t1», он не распознает его как действительный.Как бы мне получить код, принимающий сочетание буквенных и числовых данных.

Кроме того, верхняя строка на самом деле не имеет значения, так как просто счетчик полей:)

1 Ответ

0 голосов
/ 22 февраля 2019

Если ваша среда не поддерживает классы символов POSIX в awk, вы можете использовать явные диапазоны символов в выражениях в скобках:

!($1 ~ /^[A-Z0-9]{1,25}$/)

Здесь,

  • ^ -соответствует началу строки
  • [A-Z0-9]{1,25} - соответствует 1–25 заглавным буквам или цифрам
  • $ - конец строки.

ПРИМЕЧАНИЕ.Чтобы избежать проблем с сопоставлениями, вы можете добавить LANG=C перед командой awk.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...