sed - 从模式空间的开头重复搜索 sed
问题描述
当您在 sed 中发出 's//g' 命令时,搜索会在每次替换后从被替换模式的右侧开始恢复。例如:
$ sed 's/foo/oog/g;'
ffoo
foog
同时,如果该命令再次应用于整行,我们将得到oogg
结果(两次替换)。当然,一个人可以只发出两次或三次相同的命令——但是如果我希望它重复运行直到没有匹配项怎么办?sed 可以做到这一点,还是我需要求助于 awk?
解决方案
是的,sed
支持分支命令,例如b
andt
$ echo 'ffoo' | sed ':a s/foo/oog/; ta'
oogg
:a
用标签标记替换命令a
ta
a
只要替换成功就会跳转到标签
这是另一个例子:
$ echo 'coffining' | sed ':d s/fin//; td'
cog
有关完整的详细信息,请参阅sed 手册。
推荐阅读
- java - 从 Angular 6 Httpclient 进行后期调用时,Java HttpServletRequest 参数为空
- linux - shm_open 是否提交固定数量的物理内存?
- python - 如何将 bs4.element.Tag 转换为 JSON 字典?
- php - 斜线和 wp_register_style
- javascript - 嵌套的 Javascript 如何返回“传递”承诺?
- c# - 有什么方法可以防止使用新 csproj 格式的 .NET 应用程序存在于 bin/debug/net472/AppName 中?
- powershell - 在 VSCode 的 PowerShell 命令提示符中隐藏完整文件路径
- python - 在 django 中加载图像时的可疑操作
- vue.js - Webpack:为什么 vue-loader 不能转译?
- javascript - 使用 Formdata React Native 将图像上传到 Firebase