我可以用sed实现这种替换吗? (未知命令是什么:`+'是什么意思)

时间:2015-09-18 07:16:19

标签: regex sed

我想更改格式

的行
ARR[6]=/var/dir1
ARR[7]=/var/dir2

到fomat

ARR+=(/var/dir1)
ARR+=(/var/dir2)

我正在考虑像sed -s /[.]=/+=/g这样的东西(它给了我:未知的命令:`+'),但无法让它工作。

有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:2)

sed 's/\[[^=]*=/+=(/;s/$/)/' YourFile
    在这种情况下,
  • 没有g(样本中每行只发生一次)
  • posix compliance(+在此模式下是一个简单字符)

答案 1 :(得分:1)

您可以使用此sed:

sed 's/\[[0-9]*\]=\(.*\)/+=(\1)/' file
ARR+=(/var/dir1)
ARR+=(/var/dir2)

或者这个awk:

awk -F '\\[[0-9]+\\]=' '{printf "%s+=(%s)%s", $1, $2, ORS}' file
ARR+=(/var/dir1)
ARR+=(/var/dir2)