2012-01-06 4 views
0

Я пытаюсь сравнить 2 разных конфигурационных каталога apaches. Но я хочу избежать разницы между версиями. Например, я собираюсь сравнить между 2.2.20 и 2.2.21.diff игнорировать комментарий

Это то, что я до сих пор:

#!/bin/ksh 

source=/root/daniel/scripts/test 
dest=/root/daniel/scripts/test2 

# TODO: rewrite as awk script 
delta=`diff -ur $source $dest` 

deleted=`echo "$delta" | grep "^Only in ${source}:" | sed "/^Only in ${source}: //"` 
added=`echo "$delta" | grep "^Only in ${dest}:" | sed "/^Only in ${dest}: //"` 
changed=`echo "$delta" | grep '^\+\+\+' | awk '{print $2}'` 

print "Files deleted in destination" 
echo $deleted 
print "Files Added in destination" 
echo $added 
print "Files Changed in destination" 
echo $changed 

Добавление комментария. В принципе, я собираюсь сравнить 2 каталога конфигурации. Вы можете найти версию apache в файле httpd.conf. Но идея состоит в том, чтобы игнорировать версию во всех сравнениях.

Добавление комментария 2. Тест и test2 являются каталогами, они не являются файлами. В 2 каталогах вы можете найти все конфигурационные файлы для apache. Более или менее это: + дополнительные + httpd.conf + httpd.conf_20110215 + магия + mime.types + оригинальные + ssl.crt + ssl.key + Темп

Благодаря

+1

Где версия в файлах? –

+0

Можете ли вы показать нам содержимое ваших 'test' и' test2' файлов? –

+0

дублированный вопрос. см. ответ здесь: http://unix.stackexchange.com/questions/17040/how-to-diff-files-ignoring-comments-lines-starting-with – RNA

ответ

1

Используйте опцию -I в diff, чтобы игнорировать линии.

От man diff

-I RE --ignore согласующие-линий = RE

 Ignore changes whose lines all match RE. 
Смежные вопросы