linux - sed在linux中为字符串添加前缀的用法
问题描述
在我的问题陈述中,我想用前缀替换一个单词
sed 's/hello-world/'"$1"'-hello-world/g' test.sql
这$1
是作为参数传递给 shell 脚本的任何前缀
在这种情况下,第一次使用它绝对可以正常工作。让我们假设“前缀=新”
- 它取代
new-hello-world
了完美的输出。 - 如果我再次重新运行该命令,我会得到
new-new-hello-world
不是预期的 - 再次运行它,我会得到
new-new-new-hello-world
不想要的
new-hello-world
无论运行多少次,我们如何搜索和替换它?使用正则表达式也很好。
解决方案
要使其具有幂等性,只需首先检查它是否不匹配。例如:
sed "/$1-hello-world/!s/hello-world/$1-hello-world/g" test.sql
这不是特别健壮,如果原始文档包含该行将失败new-hello-world hello-world
,但可能足以满足您的需要。(你需要更多地担心/
前缀中的字符,所以如果你想要一个强大的解决方案,还有很多工作要做。)
推荐阅读
- mongodb - 无法覆盖 Spring Boot 2.1.6.RELEASE 中的分页默认值?
- php - 我想改变多维数组的键
- c - 使用 wolfssl 进行证书完整性检查
- swift - SwiftUI:如何绘制填充和描边的形状?
- jenkins - Jenkins 资源锁:获取多个节点特定资源的锁
- jquery - 将日期时间从 UTC 转换为用户时区
- javascript - 如果某事*没有*发生,则触发的计时器的名称是什么?
- php - PHP Google Pub/Sub:调用 listTopics 时为什么出现 404(未找到)错误?
- android - 在构造函数中注入需要参数的依赖项
- python - 有什么方法可以从excel文件中读取使用openpyxl python获取单元格内每个单词的样式