我希望通过一个文件夹恢复,并用%{text in here}替换所有出现的%{text in here}
我检查了其他grep+sed主题,但它们通常与标准字符串替换有关;我希望保持字符串的完整性,但替换字符串周围的一些字符(基本上用%替换第一个开头大括号,并移除第二个大括号)。
发布于 2010-12-08 14:24:05
尝试像s/{{\(.*\)}}/%{\1}/这样的regexp
1在第二个字符串中被替换为第一个(.)的内容配对
发布于 2010-12-08 14:23:52
除非您出于某种原因不得不使用sed,否则Perl几乎总是更可取的,因为它的正则表达式更简洁,功能更强大:
find ... | xargs perl -i~ -pe 's/{{(.*?)}}/%{$1}/g'此外,尽管-i~创建了一个备份,但我强烈建议您在使用此备份之前备份整个树。我不能通过两次运行坏了的命令行来计算我清除工作的次数。最常见的错误是不小心使用-ne而不是-pe,这会导致从原始数据中删除所有数据。再次运行它可以用新清空的文件替换备份,只会让你感到胃里有一种下沉的感觉。
发布于 2010-12-08 17:05:24
这个能行吗?
sed 's/{{/%{/g;s/}}/}/g' inputfile或
sed 's/{{\([^}]*\)}}/%{\1}/g' inputfilehttps://stackoverflow.com/questions/4388461
复制相似问题