Sed 命令行为差异与参数处理

ana*_*arg 5 linux sed parameter

最近我正在对sed配置文件执行操作。我发现该sed命令的行为与参数-irvs不同-ri:-

[root@node system]# sed -ri 's|(^[[:space:]]+[Kk]ernel.*$)|\1 transparent_hugepage=never|' temp_file
[root@node system]# echo $?
0

[root@node system]# sed -ir 's|(^[[:space:]]+[Kk]ernel.*$)|\1 transparent_hugepage=never|' temp_file
sed: -e expression #1, char 60: invalid reference \1 on `s' command's RHS
[root@node system]# echo $?
1
Run Code Online (Sandbox Code Playgroud)

Kus*_*nda 11

-i选项sed接受一个选项参数,文件名后缀就地编辑输入文件时使用备份文件。对于 GNU sed,此选项参数是可选的,但如果提供,显然会使用。

Using-ir告诉sed备份文件的文件名应该具有以字符为后缀的输入文件的原始名称r。由于-r现在未使用,表达式替换部分中的反向引用不再被识别为有效,因为\( ... \)模式中没有组(这是您使用基本正则表达式捕获模式的一部分的方式)。

总之,sed -ri不一样sed -ir