Я хочу удалить последнюю часть файла, начиная со строки, следующей за определенным шаблоном и включая предыдущий символ новой строки .
Итак, остановившись на «STOP», следующийfile:
keep\n
STOP\n
whatever
Должен вывести:
keep
Без завершающего перевода строки.
Я пробовал это, и логика, кажется, работает, но кажется, что sedдобавляет новую строку каждый раз, когда он печатает свой буфер.Как я могу избежать этого?Когда sed не манипулирует буфером, у меня такой проблемы нет (т.е. если я удаляю STOP, sed выводит «что угодно» в конец файла без перевода строки).
printf 'keep
STOP
Whatever' | sed 'N
/\nSTOP/ {
s/\n.*$//
P
Q
}
P
D'
Iпытаюсь написать фильтр очистки git, и я не могу добавлять новую строку каждый раз, когда я фиксирую.