【问题标题】:Replace part of string with variable using sed or awk [duplicate]使用 sed 或 awk 将字符串的一部分替换为变量 [重复]
【发布时间】:2021-05-11 14:02:24
【问题描述】:

有没有办法使用 sed 或 awk 只用随机数替换字符串的一部分?

从一个 URL 列表文件,我需要用一个随机数替换每个匹配模式的 GET url 参数。

例子:

用随机数替换“param1=”

所以,替换后:

【问题讨论】:

    标签: awk sed


    【解决方案1】:

    sed 和 awk 的语法基本相同 - 扩展的正则表达式是

    s/(param)([0-9])=([0-9]{3,})/\1\2= { … fill in rand number u want … } /g'
    

    awk 方面,mawk 或 gawk

    match($0, /(param)([0-9])=([0-9][0-9]+)/);
    
    $0 = substr($0,1,RSTART + 6) 
         {…fill in rand #…} 
        substr($0, RSTART+RLENGTH); 
    

    不幸的是,由于 mawk2 既没有像 \1 \2 这样的反向引用,也没有像 {3,} 这样的括号扩展,遗憾的是,如果你想编写可移植代码,那么 match 就是要走的路。

    如果你想留在gawk,那么gensub 可以正常工作。

    【讨论】:

      猜你喜欢
      • 2015-04-18
      • 2017-02-08
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      相关资源
      最近更新 更多