比较文件 Unix

comparing files Unix

我有 2 个脚本 file.txtfile2.txt

file1.txt


name|mandatory|
age|mandatory| 
address|mandatory|
email|mandatory| 
country|not-mandatory| 

file2.txt

gabrielle||nashville|gabrielle@outlook.com||

这些是我的确切数据文件,在file1中column1是字段名,column2是注意file2中该字段是否不应该为空。

在文件 2 中,数据位于由 | 分隔的单行中。 file1 中提到的强制性年龄在 file2 中不存在[这是一行],这也是我需要的输出。

预期输出:

age mandatory

我得到的代码是 file2 的格式与 file1 的格式相同,其中 mandatory 被替换为 field2 数据。

awk -F '|' '
    NR==FNR && =="mandatory" {m[]++}
    NR>FNR && =="" && m[] {printf "%s mandatory\n", }
' file1.txt file2.txt

您必须遍历字段 for(... i <= NR ...)

awk -F '|' '
    NR==FNR { name[NR]=; man[NR]= }
    NR!=FNR {
      for (i = 1; i <= NR; ++i) {
         if ($i == "" && man[i] == "mandatory") {
             printf("Field %s is mandatory!\n", name[i]);
         }
      }
   }
' file1.txt file2.txt