【问题标题】:sed replacement for a stringsed 替换字符串
【发布时间】:2020-03-13 00:33:50
【问题描述】:
(declare-const buabor Real)

我想替换为

(declare-fun buabor () Real)

用sed可以做到吗?

我试过了

sed 's/(declare-const\s([a-z])\s(Real))/(declare-fun\s\2\(\)\3/)g'

但无法得到结果 任何帮助都会很棒

【问题讨论】:

  • 或许sed 's/(declare-const buabor Real)/(declare-fun buabor () Real)/' file?

标签: linux string sed


【解决方案1】:

应该这样做(假设GNU sed 使用\s):

sed 's/(declare-const\s\([a-z]*\)/(declare-fun \1()/'
  • 默认使用 BRE,所以( 和) 将在搜索部分按字面意思匹配。另请参阅手册中的BRE-vs-ERE 部分
  • \( 和 \) 将成为捕获组
  • [a-z]* 将匹配零个或多个小写字母
  • 该行的其余部分不需要匹配并用于替换部分,因为它没有被修改


更多观察:

  • ( 和 ) 在替换部分并不特殊
  • \s 在替换部分再次不是特殊的,将插入 s

【讨论】:

    猜你喜欢
    • 2020-07-28
    • 2012-10-09
    • 2012-12-21
    • 2020-01-12
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多