sed,删除文件中的所有注释

sed,删除文件中的所有注释

我有一个 sed 命令可以删除文件中的注释,如下所示:

sed -i /^#/d /path/to/file

这有效,但当注释缩进/前面有空格时则无效。

喜欢

#this is a good comment           ---- works
    #this is an indented comment  ---- doesn't work

我如何更改它以删除以 # 作为第一个可见字符的行?

答案1

修改您的正则表达式,使其允许前导空格。

sed -e '/^[ \t]*#/d'

此正则表达式将匹配以 0 个或多个空格或制表符(以任何顺序)开头,后跟井号的行。

GNU sed 还支持符号名称:

sed -e '/^[[:space:]]*/d'

其中包括所有空白字符,包括有趣的 unicode 外语字符。然而,这样的便携性较差。

答案2

尝试

sed -i -e '/^[ \t]*#/d' /path/to/file

您可能必须将 \t 替换为文字制表符。

答案3

你可以做 :

sed '/^[[:blank:]]*#/d' file.txt

使用grep

grep -v '^[[:blank:]]*#' file.txt

答案4

使用:

sed '/^\s*#/d'

解释:

^ beginning of line
\s* arbitrary amount of whitespace (or none)

相关内容