Bash,sed,删除每个循环的最后一行

Bash,sed,删除每个循环的最后一行

问题

我怎样才能删除此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

如果您的输入文件每一行之前都有一个空行##,并且仅在那里,您可以指定一个空行作为范围的结束:

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

^$匹配具有开头 ( ^)、行结尾 ( $) 且中间没有任何内容的行。

相关内容