Ubuntu 如何使用sed删除线前的#?
我正在尝试取消注释(删除#)行Ubuntu 如何使用sed删除线前的#?,ubuntu,sed,Ubuntu,Sed,我正在尝试取消注释(删除#)行sql session { radutmp # # See "Simultaneous Use Checking Queries" in sql.conf # sql } 这就是我尝试过的: sed -i 's/# sql/ sql/' /etc/freeradius/sites-available/inner-tunnel 但不知何故,这些空间的计算是不正确的。它在下面找
sql
session {
radutmp
#
# See "Simultaneous Use Checking Queries" in sql.conf
# sql
}
这就是我尝试过的:
sed -i 's/# sql/ sql/' /etc/freeradius/sites-available/inner-tunnel
但不知何故,这些空间的计算是不正确的。它在下面找不到#sql
,看起来输入文件使用的是制表符而不是空格。您可以使用包含制表符和空格的[:blank::][/code>字符类:
session {
radutmp
#
# See "Simultaneous Use Checking Queries" in sql.conf
# sql
}
sed '/#[[:blank:]]*sql/s/#//' file
该命令使用sed#
选项将行与序列#
匹配,零个或多个空格后跟术语sql
,并删除第一个#
:
> sed -E 's/#(\s+sql)/\1/i' /etc/freeradius/sites-available/inner-tunnel
^ holds matching chunk from within first capturing group
\s
表示表示[\t\n\r\f\v]
字符的字符类\s+
确保在#
之后应该有一些空格,您确定这是空格而不是制表符吗?[:blank:]
足以匹配空格或制表符<代码>[:space:]
将匹配空格、制表符、换行符、回车符、换行符和垂直制表符。我已将其更改为[:blank:][/code>