linux - sed 替换字符串
问题描述
(declare-const buabor Real)
我想替换为
(declare-fun buabor () Real)
可以用sed完成吗?
我试过了
sed 's/(declare-const\s([a-z])\s(Real))/(declare-fun\s\2\(\)\3/)g'
但无法得到结果任何帮助都会很棒
解决方案
这应该这样做(假设使用GNU sed
的\s
是):
sed 's/(declare-const\s\([a-z]*\)/(declare-fun \1()/'
- 默认情况下,使用 BRE,因此
(
将)
在搜索部分按字面意思匹配。另请参阅手册中的BRE-vs-ERE部分 \(
然后\)
将成为捕获组[a-z]*
将匹配零个或多个小写字母- 该行的其余部分不需要匹配并用于替换部分,因为它没有被修改
还有一些观察:
(
并且)
在更换部分并不特别\s
在替换部分再次不是特别的,将插入s
推荐阅读
- sql - 带有 UNION 子句和 WHERE 子句的 VBA-ACCESS DAO SQL
- python - 静态构建的 python 代码无法解析 DNS 名称
- r - 如何使用 R 从 Google 驱动器中的特定文件夹下载文件?
- powershell - 通过 powershell 设置 winrm/config/service RootSDDL
- ms-access - 如果 DLOOKUP 有两种不同的数据类型,它们可以使用两个不同的标准吗?
- mongodb - MongoDB:我需要存储两次数据,还是可以使用额外的索引?
- sql - 当一个接一个地进行 2 次恢复时,是否有一种简单的方法可以从 SQL Server 获取恢复进度?
- c# - 如何在不更改元数据的情况下创建新的 PDF?
- gitlab - 为通过 gitpython 创建的新项目授予对部署密钥的写入权限
- spring-integration - 在单个集成流中使用多个 aws 出站适配器