问题
我怎样才能删除此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
^$
匹配具有开头 ( ^
)、行结尾 ( $
) 且中间没有任何内容的行。