Блог Герхарда Гаппмайера - Как рекурсивно заменить файл заголовки исходных файлов
К сообщению в блоге прилагается файл tar.gz
, содержащий необходимые файлы.
Он имеет файл header.template
, в котором вы можете написать собственный комментарий, он может занимать несколько строк.
Он имеет сценарий remove_header.awk
, который заменяет существующие заголовки новым заголовком.
Чтобы запустить его:
find . -name "*.h" -exec ~/rh/replace_header.sh {} \;
может быть тем, что вам нужно для вашего задания.
Чтобы взять ваш пример и использовать diff -u
michael@x071:[/home/michael]diff -u file?
--- file1 2016-11-24 07:48:41 +0000
+++ file2 2016-11-24 07:48:57 +0000
@@ -1,3 +1,3 @@
orange
apple
-peach
+strawberry
Небольшой совет - RTM - или - Прочтите Руководство. Часто есть и другие варианты. К вашему сведению: исторические параметры diff (и diff3 при сравнении трех файлов) должны были помочь в создании «программы inout», которая изменила бы file1 на file2 (или file2 обратно на file1). Это было основой всего программного обеспечения "контроля версий".
Параметры сравнения, которые я помню с давних пор:
Последний вариант, который я выделю, - условно «новый». (также несколько лет назад, но часто отсутствовал в реализациях POSIX). Вместо создания вывода, подходящего для 'ed' из 'RCS', он подходит для 'patch'
IMHO: ключевое значение diff -c является улучшением по сравнению с командой 'cmp' - когда вы хотите знать больше, чем ТОЛЬКО, отличаются ли два файла или нет. Я никогда не обращал внимания (может быть, это тоже «новый» вариант) - но я подумаю об этом, когда мой вопрос будет о рекурсивном поиске файлов, которые различаются между двумя деревьями каталогов.
Вывод diff
состоит из фрагментов, каждый из которых соответствует набору изменений. Строка ***************
отмечает начало такого куска.
Каждый чанк дает вам контекст в файлах. *** 1,3 ****
означает, что далее следуют строки с 1 по 3 в первом файле, а --- 1,3 ----
означает, что далее следуют строки с 1 по 3 во втором файле.
Знак минус -
в первой колонке обозначает строки, которые были удалены, а знак плюс +
- строки, которые были добавлены. Восклицательный знак обозначает строки, которые изменились.
В вашем случае персик
в первом файле был заменен на клубнику
во втором.
Ответ на ваш вопрос Info-файл diff, узел Подробный контекст
:
Строки контекста вокруг различающихся строк начинаются с двух пробелов . Строки, которые различаются между двумя файлами, начинаются с одним из следующих символов индикатора, за которым следует пробел :
!
Строка, которая является частью группы из одной или нескольких строк, которые изменили между двумя файлами. Соответствующая группа строк помечена
!
в части этого ханка для другого файла.
+
«Вставленная» строка во втором файле, которая ничего не соответствует в первом файле.
-
«Удаленная» строка в первом файле, которая ничего не соответствует во втором файле .
В Info-файле содержится много информации о форматах вывода, включая строки заголовка. Я рекомендую вам прочитать его еще раз.