Home > front end >  comparing files Unix
comparing files Unix

Time:04-28

I have 2 scripts file.txt and file2.txt

file1.txt


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

file2.txt

gabrielle||nashville|[email protected]||

These are my exact data files, In file1 column1 is the field name and column2 is to note whether the field should not be null in file2.

In file2 data is in single row separated by |. The age mentioned as mandatory in file1 is not present in file2[which is a single row] and that is what my needed output too.

Expected output:

age mandatory

I got with code that file2 is in same format as file1 where mandatory is replaced with field2 data.

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

CodePudding user response:

You have to iterate over fields for(... i <= NR ...).

awk -F '|' '
    NR==FNR { name[NR]=$1; man[NR]=$2 }
    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
  • Related