Сравните два файла, используя awk, имеющий много столбцов, и получите столбец, в котором данные отличаются - PullRequest
0 голосов
/ 27 апреля 2018

файл 1:

field1|field2|field3|
abc|123|234
def|345|456
hij|567|678

file2:

field1|field2|field3|
abc|890|234
hij|567|658

желаемый вывод:

field1|field2|field3|
abc|N|Y
def|345|456
hij|Y|N

Мне нужно сравнить. Если поля совпадают, тогда в выходной файл нужно вставить Y, иначе N.

1 Ответ

0 голосов
/ 27 апреля 2018

Используя awk, вы можете попробовать это:

awk -F '|' 'FNR == NR {
   p = $1
   sub(p, "")
   a[p] = $0
   next
}
{
   if (FNR > 1 && $1 in a) {
      split(a[$1], b, /\|/)
      printf "%s", $1 FS
      for (i=2; i<=NF; i++)
         printf "%s%s", ($i == b[i] ? "Y" : "N"), (i == NF ? ORS : FS)
   }
   else
      print
}' file2 file1

field1|field2|field3|
abc|N|Y
def|345|456
hij|Y|N

Код Демо

...