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

时间:2013-07-08 11:22:15

标签: 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

所需的字符串转换

Replace "StringString" with "Strung"

使用以下代码

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

sed -ri 's/String+/Strung/g' data.txt <-- will work

我认为选项标志的顺序无关紧要?有什么解释吗?

侧注:交换机-i“在”-r允许“扩展的情况下”编辑文件“    正则表达式“(允许+运算符)。运行sed 4.2.1    2010年12月在Ubuntu 12.10上。

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:5)

执行-ir时,您指定“r”应该是备份文件的后缀。

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