У меня есть файл, содержащий заголовок, от которого я хочу избавиться. У меня нет хорошего способа адресации последней строки заголовка или первой строки данных, но я могу адресовать строку перед предпоследней строкой заголовка с помощью регулярного выражения.
Пример ввода:
a bunch of make output which I don't care about
for junk in blah; do
can't check for done!
done
for test in blurfl; do # this is the addressable line
more garbage
done
line 1
line 2
line 3
line 4
line 5
Я сделал очевидное 1,/for test in blurfl/d
, но следующие две строки не получаются. Я могу сделать команду {N;d}
, которая избавится от следующей строки, но {N;N;d}
просто снесет остальную часть файла, кроме последней строки, что, как я понял, связано с тем, что диапазон не поглощается и не обрабатывается как единое целое, а вместо этого обрабатывается построчно.
Я чувствую, что упускаю что-то очевидное, потому что я не знаю какой-то идиомы sed, но ни один из примеров в Интернете или в руководстве GNU не смог вызвать ничего полезного.
Я могу сделать это в awk, но другие преобразования, которые мне нужно сделать, делают awk несколько неудобным. Но GNU sed приемлем.