Как сопоставить синтаксис в файле, если отображение соответствует успеху или ошибке - PullRequest
0 голосов
/ 26 мая 2020

У меня есть сценарий, в котором у меня есть следующие данные в файле ученика

Мой Student.txt ввод данных, необходимо следовать шаблону, в каждой строке необходимо содержать три информации, разделенные / следующим образом :

NAME/SURNAME/COUNTRY

Итак, ниже у меня есть пример подходящего файла:

    RAM/ABC/INDIA
    RAJ/XYZ/DELHI
    VIRAJ/FDS/GUJRAT

ЧТО ОЖИДАЕТСЯ:

Каждая запись в файле должна соответствовать синтаксису: NAME/SURNAME/COUNTRY.

Если кто-то терпит неудачу, то общий статус должен отображаться как неудачный с сообщением syntax does not match, в противном случае помечать как успех.


ЧТО ПРОИСХОДИТ:

Если я передаю данные в приведенный выше код, как показано ниже:

    RAM/ABC/INDIA
    RAJ/XYZ/DELHI
    VIRAJ/FDS/

Когда я выполняю свой код, я не получаю никаких сообщений об ошибке: syntax does not match просто проверяется до двух записей

    RAM/ABC/INDIA
    RAJ/XYZ/DELHI

Последняя запись в файле, то есть VIRAJ/FDS/ не проверяется и не выдает ошибку: syntax does not match

Мой код:

    for i in `cat /demo/Student.txt`
      do 
      check=`echo $i | cut -d '/'-f3`
      if [[ -z $check ]];
      then 
        echo failed syntax does not match NAME/SURNAME/COUNTRY
        exit 1 
      fi 
    done 

1 Ответ

0 голосов
/ 26 мая 2020

Вы можете решить эту проблему с помощью регулярных выражений, как вы можете видеть здесь:

grep "[A-Z]/[A-Z]*/[A-Z]" test.txt

Это показывает следующие строки:

RAM/ABC/INDIA
RAJ/XYZ/DELHI

Это вызвано следующими совпадениями:

M/ABC/I
J/XYZ/D

Если вы используете grep -v, вы найдете строки, которые не совпадают. Запустив wc -l, вы обнаружите, есть ли какие-либо из таких строк, и в случае да, вы можете показать свое сообщение об ошибке.

В некоторых синтаксисах регулярных выражений + используется как способ сказать «одна или несколько записей »(вместо *, что означает« ноль или более записей »), но это зависит от ОС вашей системы, работает это или нет.

Можете ли вы сказать мне, работает ли это для вас?

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