我的文本格式如下:
key [value]
key [value, value]
现在我意识到我忘了在键和值数组之间放置一个逗号,这意味着我正在尝试获取它:
key, [value]
key, [value, value]
我以为,不用重新生成文件要花费几个小时,我也许可以轻松地用sed来完成它。我尝试了cat small.txt | sed -n 's/{ \[}/{, \[}/g'
和其他一些变体(例如,没有{}并且没有空格,我没有收到错误,但文件没有更改
您可以使用
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。