Maj*_*imi 3 sed regular-expression
此链接中有一个关于以下内容的示例sed
:
要删除所有以“#”开头的行的第一个数字,请使用:
sed '/^#/ s/[0-9][0-9]*//'
Run Code Online (Sandbox Code Playgroud)
第一个模式(/^#/
)的好处是什么?可能很简单:
sed 's/^#[0-9][0-9]*//'
Run Code Online (Sandbox Code Playgroud)
sed
命令的一般格式是
Run Code Online (Sandbox Code Playgroud)[address[,address]] function
当命令具有单个地址时,它会在与该地址匹配的所有行上运行。当命令没有地址时,它在每一行上运行。
参考:POSIXsed
关于你的具体例子:
/^#/ s/[0-9][0-9]*//
此命令有一个地址 ,/^#/
它匹配所有以 开头的行#
。
替换模式是/[0-9][0-9]*/
。这匹配行中出现的第一个数字序列。
简单的英文摘要:删除每行中以#
.开头的第一个数字序列。
例子:# non-digits|5555|non-digits|5555
变成# non-digits||non-digits|5555
s/^#[0-9][0-9]*//
没有地址,所以这个命令在每一行上运行。
替换模式/^#[0-9][0-9]*/
匹配以#
锚定在行首的连续数字序列。
简单的英语摘要:#
从每一行的开头删除后跟一个数字序列(并且只有那个模式)。
示例:#5555|non-digits|5555
变为|non-digits|5555
,但
# non-digits|5555|non-digits|5555
由于替换模式不匹配而未更改。