7

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

请注意,我不是在寻找解决方法,而是为什么 and 的顺序很-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 允许“扩展正则表达式”(允许+运算符)。在 Ubuntu 12.10 上运行 sed 4.2.1 Dec. 2010。

4

2 回答 2

6

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

-i -r如果您按顺序需要它们,您应该能够做到

于 2013-07-08T11:30:15.383 回答
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.
于 2013-07-08T11:27:14.677 回答