Bash 如何使用sed删除注释

Bash 如何使用sed删除注释,bash,unix,sed,Bash,Unix,Sed,我有这样的文件 <IfModule mod_unixd.c> # Run as a unique, less privileged user for security reasons. # User/Group: The name (or #number) of the user/group to run httpd as. # Default: User #-1, Group #-1 # https://httpd.apache.org/docs/c

我有这样的文件

<IfModule mod_unixd.c>
    # Run as a unique, less privileged user for security reasons.
    # User/Group: The name (or #number) of the user/group to run httpd as.
    # Default: User #-1, Group #-1
    # https://httpd.apache.org/docs/current/mod/mod_unixd.html
    # https://en.wikipedia.org/wiki/Principle_of_least_privilege
    User www-data #
    Group www-data
</IfModule>

输出必须是

<IfModule mod_unixd.c>
    User www-data #
    Group www-data
</IfModule>

用户www数据#
组www数据

要删除任何以空格开头、后跟
#
的行,可以使用

sed -e '/^\W*#/d' test.conf
这意味着模式匹配

  • 从一开始
  • 只允许空白字符
  • 后跟
    #
  • 之后的任何事情都会被忽略

要删除任何以空格开头,后跟
的行,可以使用

sed -e '/^\W*#/d' test.conf
这意味着模式匹配

  • 从一开始
  • 只允许空白字符
  • 后跟
    #
  • 之后的任何事情都会被忽略
输出必须是

<IfModule mod_unixd.c>
    User www-data #
    Group www-data
</IfModule>
看起来您希望删除以
开头的行(零个或多个空格之后),并且不希望删除在非注释语句结尾之后开始的注释(如
用户www data

试试这个:

sed -e '/^\s*#/d' test.conf
或者这个:

sed -e '/^[ \t]*#/d' test.conf
此正则表达式将匹配以0或更多空格或制表符(以任何顺序)开头的行,后跟哈希符号

GNU sed还支持符号名称:

sed -e '/^[[:space:]]*/d'
其中包括所有空白字符,包括有趣的unicode外语字符。然而,这不太便于携带

编辑:

sed--version
在我的系统上返回:

sed (GNU sed) 4.7
Packaged by Debian
Copyright (C) 2018 Free Software Foundation, Inc.
输出必须是

<IfModule mod_unixd.c>
    User www-data #
    Group www-data
</IfModule>
看起来您希望删除以
开头的行(零个或多个空格之后),并且不希望删除在非注释语句结尾之后开始的注释(如
用户www data

试试这个:

sed -e '/^\s*#/d' test.conf
或者这个:

sed -e '/^[ \t]*#/d' test.conf
此正则表达式将匹配以0或更多空格或制表符(以任何顺序)开头的行,后跟哈希符号

GNU sed还支持符号名称:

sed -e '/^[[:space:]]*/d'
其中包括所有空白字符,包括有趣的unicode外语字符。然而,这不太便于携带

编辑:

sed--version
在我的系统上返回:

sed (GNU sed) 4.7
Packaged by Debian
Copyright (C) 2018 Free Software Foundation, Inc.

请将该示例输入的所需输出(无描述)添加到您的问题中(无评论)。请将该示例输入的所需输出(无描述)添加到您的问题中(无评论)。但它会使用
User www data#
@Vitalii删除是的,没错。我没有注意到/d-谢谢。我编辑了它。@Vitalii如果答案对你有帮助,你能接受吗?但是它会用
用户www-data#
@Vitalii删除是的,没错。我没有注意到/d-谢谢。我编辑过。@Vitalii如果答案对你有帮助,你能接受吗?