Я делаю сравнение 2 файлов file1, file2, используя первый столбец в файле1, в первый столбец в файле2 и возвращая соответствующее значение из 7-го столбца.Печать сравниваемого результата в последнем заголовке столбца
awk -F, 'FNR==NR{a[$1]=$7;next} {print (($1 in a) ? $0","a[$1] : $0",NA");}' file2.txt file1.txt > tmp && mv tmp file1.txt
также на следующий день он будет сравнивать и добавлять результат.
cat file1.txt
N1,N2,N3,N4,N5,N6,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10
XX,ZZ,XC,EE,RR,BB,OK,OK,OK,OK,OK,OK,OK,OK
XC,CF,FG,RG,GH,GH,NA,NA,NA,NA,NA,NA,NA,NA,NA
DM,DF,GR,TH,EW,BB
cat file2.txt
cat file2.txt
DF,GH,MH,FR,FG,GH,NA
XX,ZZ,XC,EE,RR,BB,OK
awk -F, 'FNR==NR{a[$1]=$7;next} {print (($1 in a) ? $0","a[$1] : $0",NA");}' file2.txt file1.txt > tmp && mv tmp file1.txt
mv: overwrite `file1.txt '? у
cat file1.txt
N1,N2,N3,N4,N5,N6,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,NA ---> Header
XX,ZZ,XC,EE,RR,BB,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
XC,CF,FG,RG,GH,GH,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA
DM,DF,GR,TH,EW,BB,NA
после добавления новой строки
DM,DF,GR,TH,EW
проблема это сравнение и результат печати для заголовка также и результат печатается под заголовком D1 вместо D10 для вновь вставленной строки в файла1
Как мы можем печатать таким образом, сравнение должно исключать заголовок и результат под заголовком последнего столбца
N1,N2,N3,N4,N5,N6,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10
XX,ZZ,XC,EE,RR,BB,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
XC,CF,FG,RG,GH,GH,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA
DM,DF,GR,TH,EW,BB ,NA
Вы можете удалить '$ 0' от 'print $ 0'. Он выполнит действие по умолчанию, распечатает строку. – Jotne
@ Jotne: Да, я знаю, но предпочитаю этот способ для ясности и удобочитаемости. –
Но как объединить оба условия? –