2015-04-29 2 views
-1

Предположим, у нас есть два файла с именем file1 и file2.Diff два файла в сценарии оболочки

File1:  
a=b  
c=d  
e=f 

File2: 
a=p 
c=o 
e=f 
g=h 
i=j 

Здесь file2 имеет те же ключи file1 и различных values.Apart от некоторого дополнительного ключа пары значений его собственных.

Сравните два ключа файлов, замените значение file2 значением file1 на основе соответствия ключа. Сохраните новые записи в файле2.

Таким образом, мой окончательный вывод должен быть:

File2: 
a=b 
c=d 
e=f 
g=h 
i=j 

Заранее спасибо.

+3

Похоже, это должно быть довольно простым в 'awk'. Мы здесь не для того, чтобы написать для вас, вам нужно сделать свою работу. Мы поможем вам исправить это, если вы не можете заставить его работать. – Barmar

+1

Кстати, это не то, что означает «diff». Это означает сообщить о различиях между двумя файлами. Вы хотите каким-то образом объединить их. – Barmar

+0

Изучено, как разбирать файл свойств, имеющий пары ключ = значение. Но полностью запутался с ассоциативными массивами. Лучше подумайте, поставите вопрос. – Honey

ответ

0

Самый быстрый способ без использования скриптов - использовать инструмент «meld».
я могу дать один из способов подхода к проблеме (хотя и не лучший)

1.read из первой строки файла по линии

2.split на основе «=» выражение

3.store две переменные, как ключ и значение сделать массив из всех ключевых пар значений

4.read из второго файла и повторить процедуру

сравнить два массива и S значения ave не только в первом массиве

В этом конкретном случае вы можете использовать команду «вырезать» в оболочке для выбора полей. Я лично предпочитаю скрипт Perl для файловых операций вроде этого :)

+0

Благодарим вас за ваш ответ, попробуем и обновим правильный подход к этой проблеме. – Honey

Смежные вопросы