首页 > 解决方案 > 签入文件数据与语法匹配

问题描述

我有一个场景,我想检查文件中的以下详细信息是否与语法匹配

语法:姓名/姓氏/国家

注意: 文件中的每条记录都应与语法匹配。如果一条记录不匹配,则应显示失败或成功

档案资料

Ajay/abc/india
Avik/bcs/delhi
Viraj/xyz/

如您所见,文件数据最后一条记录根据语法不匹配,则应显示失败

我的代码

 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

标签: linuxshell

解决方案


也许使用 awk

#check value in third column, using / as a delimiter
check="$(awk -F"/" '{print $3}' /demo/Student.txt)"

#check if third column is empty
if [ "$check" == "" ]; then
    echo "failed syntax..."
    exit 1
fi

您可以在三列上运行此检查(将打印 $3 更改为 $1 和 $2)可能不是最有效的解决方案,因为我对 shell 脚本也相当陌生,但我认为它应该可以工作。


推荐阅读