【发布时间】:2019-08-26 08:30:32
【问题描述】:
我有一个看起来像这样的文本文件:
#filelists.txt
a
# aaa
b
#bbb
c #ccc
我想删除以'#'开头的部分行,然后,如果行以#开头,则删除整行。
所以我在 shell 中使用 'sed' 命令:
sed -e "s/#*//g" -e "/^$/d" filelists.txt
我希望它的结果是:
a
b
c
但实际结果是:
filelists.txt
a
aaa
b
bbb
c ccc
我的“sed”命令出了什么问题?
我知道 '*' 表示“任何”,所以我认为 '#*' 表示“#”之后的字符串。
不是吗?
【问题讨论】:
-
#*表示零个或多个#。要完成这项工作,您需要#.*其中.表示任何字符,然后星号给出零个或多个任何字符。
标签: sed