1

у меня есть файл:

unreliable, random content, multiple lines
this_line_is_always_the_same_and_never_repeated_in_file
unreliable, random content, SINGLE line
unreliable, random content, multiple lines

каждый unreliable, random content, multiple lines - это случайное количество строк со случайным текстом

я пытаюсь создать файл .patch который добавляет 4 строки в файл выше, как это:

unreliable, random content, multiple lines
this_line_is_always_the_same_and_never_repeated_in_file
unreliable, random content, SINGLE line
my_new_line_1
my_new_line_2
...
unreliable, random content, multiple lines

(когда я говорю «случайно», это не совсем случайно, я просто имею в виду, что не будет двух исправляемых файлов, которые будут иметь одинаковые значения)

я понятия не имею, как добавить содержимое 2 строки после строки,

любая помощь будет оценена

извините, если я не отформатировал этот вопрос правильно

РЕДАКТИРОВАТЬ: просто добавив, что я тоже не могу полагаться на номера строк, и я впервые пытаюсь использовать diff и patch

1 ответ1

0

Файл исправления в унифицированном формате - это просто число фрагментов, начинающихся с строки, начинающейся с @@ , что дает номер строки и длину фрагмента в старом и новом файле, а также имя старого и нового файла в начале. , Так что если, например, always_the_same_line имеет номер строки 30, файл исправления будет выглядеть

--- old_file_name
+++ new_file_name
@@ -30,2 +30,4 @@
 this_line_is_always_the_same_and_never_repeated_in_file
 unreliable, random content, SINGLE line
+my_new_line_1
+my_new_line_2

Номер строки легко найти с помощью grep -n always_the_same_line , первые две строки которого включают «ненадежный случайный контент, одиночную строку», поскольку конечный контекст можно найти с помощью grep -A1 always_the_same_line , и теперь вам просто нужно немного отформатировать с помощью awk , perl или что вам удобнее, чтобы создать файл патча в нужном формате.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .