我有一个 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)