Это можно сделать с помощью следующей awk
программы:
awk -F'|' 'FNR==NR{key1[FNR]=$1;key2[FNR]=$4;next}
{if ($2!=key2[FNR] || $5!=key1[FNR]) print}' file2.txt file1.txt
file2.txt
и построит на -строковые списки столбцов 1 и 4. Мы можем видеть, что мы анализируем первый файл в списке аргументов, утверждая, что FNR
, на -счетчик строк файла, равен NR
, общему счетчику строк (. Но обратите внимание, , что это сломается, если file2.txt
когда-либо будет пустым! ). file1.txt
для каждой строки столбцы 2 и 5 будут сравниваться со списками, заполненными при обработке file2.txt
, и, если они не совпадают, выводить строку. Вы можете попробовать что-то вроде:
while read -r line;
do
myvar2=$(line | awk '{ print $2}')
if grep -Fxq "$myvar" file2
then
# code if found
else
# code if not found
fi
myvar5=$(line | awk '{ print $5}')
if grep -Fxq "$myvar5" file2
then
# code if found
else
# code if not found
fi
done < file1
Код не проверен. Это должно считываться построчно из файла1, отдельного столбца2 и отдельного столбца5, awk '{ print $2 $5}'
следует читать 2 и 5 и проверять, существует ли myvar в файле2