Оболочка сравнения файлов

Это мои базовые значения в файле с именем file.txt:

us-east-1a m1.small 1
us-east-1c m1.small 1
us-east-1c m3.medium 1
us-east-1c m3.medium 1
us-east-1c t1.micro 1
us-east-1d m1.large 1
us-east-1d m1.medium 1
us-east-1e m3.medium 6

Это новый файл, сгенерированный file2.txt:

us-east-1a c3.large 1
us-east-1a m1.small 7
us-east-1a m3.medium 6
us-east-1c m1.small 1
us-east-1c m3.medium 6
us-east-1c t1.micro 1
us-east-1d m1.large 1
us-east-1d m1.medium 1
us-east-1d m3.large 1
us-east-1d t2.medium 1
us-east-1e m3.medium 23

Я переформулирую желаемый результат. Могу ли я получить точный вывод, как показано ниже.

us-east-1a c3.large 1
us-east-1a m3.medium 6
us-east-1d m3.large 1
us-east-1d t2.medium 1

person user3415790    schedule 30.06.2015    source источник
comment
Да, это возможно.   -  person Martin    schedule 30.06.2015
comment
Привет, Мартин, спасибо, не мог бы ты помочь мне с примером сценария.   -  person user3415790    schedule 30.06.2015
comment
Я пытался использовать temp=0; при чтении строки выполните echo $line › temp1.txt при чтении строки 2 выполните echo $line2 › temp2.txt diff temp1.txt temp2.txt › temp3.txt compare=cat temp3.txt | wc -l | head -1 if [ $compare -eq 0 ]; тогда темп=1; готово ‹ file2.txt if [ $temp -eq 1 ]; затем cat $line2 fi готово ‹ file1.txt   -  person user3415790    schedule 30.06.2015


Ответы (1)


Если я правильно понял, вы хотите сравнить первые два поля, и если они различаются, строка должна быть напечатана:

awk 'FNR==NR{a[$1$2];next}!($1$2 in a)' file.txt file2.txt

Первый файл file.txt читается в массиве. И при обработке второго файла содержимое массива сравнивается.

person chaos    schedule 30.06.2015
comment
Спасибо Хаос. Это то, что я ожидал - person user3415790; 02.07.2015