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如果答案对你有帮助,你能接受吗?