用sed放在逗号前面的括号

问题描述 投票:0回答:1

我的文本格式如下:

key [value]
key [value, value]

现在我意识到我忘了在键和值数组之间放置一个逗号,这意味着我正在尝试获取它:

key, [value]
key, [value, value]

我以为,不用重新生成文件要花费几个小时,我也许可以轻松地用sed来完成它。我尝试了cat small.txt | sed -n 's/{ \[}/{, \[}/g'和其他一些变体(例如,没有{}并且没有空格,我没有收到错误,但文件没有更改

linux sed
1个回答
0
投票

您可以使用

sed -E 's/([[:alnum:]])([[:space:]]+\[)/\1,\2/g' small.txt > newsmall.txt

在这里,-E启用POSIX ERE正则表达式引擎,并且该命令执行以下操作:

  • [([[:alnum:]])([[:space:]]+\[)找到一个字母数字并将其放在组1中,然后获取1个以上的空格和一个[到组2中
  • [\1,\2-将匹配项替换为组1,然后替换为,,然后是组2的内容。

如果要就地修改文件,请参见sed edit file in place

© www.soinside.com 2019 - 2024. All rights reserved.