Sed命令 - 选项标志的顺序很重要?(-ir vs -ri)

som*_*his 7 regex sed

这是一个错误......还是有解释?

请注意,我不是在寻找一种解决方法,而是为什么顺序-ir-ri问题......


想象一下存储在文件中的以下数据data.txt

1, StringString, AnotherString 545
2, StringString, AnotherString 723
3, StringString, AnotherString 610
4, StringString, AnotherString 118
5, StringString, AnotherString 482
Run Code Online (Sandbox Code Playgroud)

期望的字符串转换

Replace "StringString" with "Strung"
Run Code Online (Sandbox Code Playgroud)

使用以下代码

sed -ir 's/String+/Strung/g' data.txt <-- won't work

sed -ri 's/String+/Strung/g' data.txt <-- will work
Run Code Online (Sandbox Code Playgroud)

我没有看到为什么选项标志的顺序重要的原因?有什么解释吗?

侧注:开关-i"编辑文件到位",而-r允许"扩展正则表达式"(允许+操作员).在Ubuntu 12.10上运行sed 4.2.1 Dec. 2010.

tux*_*day 5

你检查了sed --help还是man sed

  -i[SUFFIX], --in-place[=SUFFIX]
                 edit files in place (makes backup if extension supplied).
                 The default operation mode is to break symbolic and hard links.
                 This can be changed with --follow-symlinks and --copy.
Run Code Online (Sandbox Code Playgroud)


And*_*and 5

在执行此操作时,-ir您指定应将“ r”作为备份文件的后缀。

-i -r如果您按顺序需要它们,您应该可以做