【发布时间】:2018-09-01 18:58:03
【问题描述】:
我需要修改每行两个模式之间的某些字符。
示例::(文件内容保存为 myfile.txt)
abc, def, 1, {,jsdfsd,kfgdsf,lgfgd}, 2, pqr, stu
abc, def, 1, {,jsdfsqwe,k,fdfsfl}, 2, pqr, stu
abc, def, 1, {,asdasdj,kgfdgdf,ldsfsdf}, 2, pqr, stu
abc, def, 1, {,jsds,kfdsf,fdsl}, 2, pqr, stu
我想编辑和保存 myfile.txt,如下所述
abc, def, 1, {jsdfsd kfgdsf lgfgd}, 2, pqr, stu
abc, def, 1, {jsdfsqwe k fdfsfl}, 2, pqr, stu
abc, def, 1, {asdasdj kgfdgdf ldsfsdf}, 2, pqr, stu
abc, def, 1, {jsds kfdsf fdsl}, 2, pqr, stu
我使用以下命令来编辑和保存 myfile.txt
sed '/1,/,/,2/{/1,/n;/,2/!{s/,/ /g}}' myfile.txt
这个命令没有帮助我实现我的目标。请帮助解决此问题。
【问题讨论】:
-
/1,/,/,2/语法用于多行匹配,而不是同一行 -
请解释您的更改应该发生的规则。对于给定的 ip/op,
sed 's/,/ /6; s/,/ /5; s/,//4'可以工作.. 但它适用于您的实际用例吗?