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
Спасибо.
Если Ваш входной файл имеет пустую строку перед каждым ##
строка и только там, можно указать пустую строку как конец диапазона:
sed -n '/## bash, file, re/,/^$/p' bash.kb
^$
соответствия строка, которая имеет начало (^
), конец строки ($
) и ничто промежуточное.