2016-04-25 2 views
2

У нас есть два файла file1.txt и file2.txtДобавление комментариев к файлу

file1.txt

PropertyA 
PropertyB 
PropertyC 
####Some Comments## 
PropertyA 
PropertyB 
PropertyC 
PropertyD 

file2.txt

#This is Property A 
PropertyA=valueforpropertyA 

PropertyB=valueforpropertyB 
#Adding values to Property C 
PropertyC=valueforpropertyC 
#Value for Property D 
PropertyD=valueforpropertyD 
#This is Property E 
PropertyE=valueforpropertyE 

PropertyF=valueforpropertyF 
#End of Properties 
#End of values 
#End of Files 

Используя следующую команду, мы использовали для записи значения file1.txt из файла file2.txt после свойств, появляющихся в #### Некоторые комментарии ## раздела файла file1.txt.

awk -F'=' 'FNR==NR{if (p) a[$0]; else {print; if ($0 ~ /####Some Comments##/) p=1} next} 
    $1 in a' file1.txt file2.txt > _file1.txt && mv _file1.txt file1.txt 

Это выход:

PropertyA 
PropertyB 
PropertyC 
####Some Comments## 
PropertyA=valueforpropertyA 
PropertyB=valueforpropertyB 
PropertyC=valueforpropertyC 
PropertyD=valueforpropertyD 

Нам необходимо вышеуказанную команду для распечатки комментариев, которые появляются в file2.txt также. Это должен быть выход файла file1.txt

*PropertyA 
PropertyB 
PropertyC 
####Some Comments## 
#This is Property A 
PropertyA=valueforpropertyA 
PropertyB=valueforpropertyB 
#Adding values to Property C 
PropertyC=valueforpropertyC 
#Value for Property D 
PropertyD=valueforpropertyD 
#End of Properties 
#End of values 
#End of Files* 

Как это сделать, используя приведенную выше команду?

+0

Некоторые затемненный AWK код. – SaintHax

ответ

0
awk -F'=' 'FNR==NR{if (p) a[$0]; else {print; if ($0 ~ /####Some Comments##/) p=1} next} { if($1 in a) { print a[$1] } else if ($1 ~ /^#/){ print }}' file1.txt file2.txt > _file1.txt && mv _file1.txt file1.txt 

Попробуйте это ....

Я просто добавил дополнительный кронштейн, который печатает строку Wether а-массив содержит $ 1 или нет (если нет, то его комментарий)

+0

Hi Joda, Спасибо за ваш ответ, Я пробовал вашу команду. Однако получение сообщения об ошибке неожиданной новой строки или конца строки // {print} // awk: cmd. line: 1: FNR == NR {if (p) a [$ 0]; else {print; if ($ 0 ~/#### Некоторые комментарии ## /) p = 1} next} {if ($ 1 in a) {print a [$ 1]} else if ($ 1 ~/^ # /) {print} awk : cmd. line: 1:^неожиданная новая строка или конец строки – Rashid

+0

Thiis - моя команда: awk -F '=' 'FNR == NR {if (p) a [$ 0]; else {print; if ($ 0 ~/#### Некоторые комментарии ## /) p = 1} next} {if ($ 1 in a) {print a [$ 1]} else if ($ 1 ~/^ # /) {print} 'file1 .txt file2.txt> _file1.txt && mv_file1.txt file1.txt. Как я могу исправить эту проблему? – Rashid

+0

Упс, я пропустил «}» в конце :) Я отредактировал свой ответ – Joda

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