Bash, sed, удалить последнюю строку для каждого цикла

Issue

Как я могу удалить последнюю строку для этого цикла sed?

sed -n '/## bash, file, re/,/##/p' bash.kb

В моем случае это также показывает мне последнюю строку, последняя строка со строкой ##, которую мне нужно удалить.

Пример.

Исходный файл bash.kb, это текстовый файл.

...

## bash, file, remove last character on every line
sed 's/.$//' $file

## bash, files, watch only today's modified files
some command.
some 2nd command.

## bash, file, remove duplicate rows by column 1
sort -u -t, -k1,1 $file

## bash, file, exclude
command exclude
command exclude 2

## bash, file, remove all whitespaces from file
command
...

Когда я ввожу эту команду.

sed -n '/## bash, file, re/,/##/p' bash.kb

Он будет искать ## bash, file, re и отображать вывод до следующего ##, поэтому со следующей ## линией заголовка, которую мне нужно удалить.

## bash, file, remove last character on every line
sed 's/.$//' $file

## bash, files, watch only today's modified files
## bash, file, remove duplicate rows by column 1
sort -u -t, -k1,1 $file

## bash, file, exclude
## bash, file, remove all whitespaces from file
command

Вывод должен быть таким (реализовать sed '$d' для каждого цикла? Но как?).

## bash, file, remove last character on every line
sed 's/.$//' $file

## bash, file, remove duplicate rows by column 1
sort -u -t, -k1,1 $file

## bash, file, remove all whitespaces from file
command

Спасибо.

1
задан 2 October 2019 в 10:12

1 ответ

Если Ваш входной файл имеет пустую строку перед каждым ## строка и только там, можно указать пустую строку как конец диапазона:

sed -n '/## bash, file, re/,/^$/p' bash.kb

^$ соответствия строка, которая имеет начало (^), конец строки ($) и ничто промежуточное.

1
ответ дан 23 October 2019 в 09:42

Другие вопросы по тегам:

Похожие вопросы: