代码之家  ›  专栏  ›  技术社区  ›  systemdebt

使用sed替换shell脚本中的值

  •  1
  • systemdebt  · 技术社区  · 6 年前

    FAILED_REQUEST_DIRECTORY=/bla/bla2 java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1234  -jar /xyz/abc-service-1.0-SNAPSHOT.jar --server.port=1111 --server.address=127.0.0.1 --kafka.bootstrap.servers=10.111.11.11:3197,10.112.12.111:3197,10.123.44.25:3197 --topic.pushcrew.encryptionKey=abc-def-egh --spring.application.name=name-sevice  --fb.verification.token=token --management.trace.include.payload=true --topic.pushcrew.hits=activity-logs --max.block.ms=1000 --pager.duty.api.key=apikey --dsn=dsn
    

    --server.address 通过一个变量将值shell脚本,我该怎么做?

    我知道如果我必须替换key的值--server.address,它将如下所示:

    sed -i "s#--server.address=.* #$SERVER_ADDRESS#g;
    

    但是,我如何保持空间,必须有后,更换和我如何确保该部分int键后才 = (等于)和之前 (空格)被替换。

    2 回复  |  直到 6 年前
        1
  •  1
  •   anubhava    6 年前

    你可以用这个 sed 有2个捕获组和反向引用:

    val='10.0.0.1'
    
    sed -E "s/^(.*--server.address=)[^[:blank:]]+(.*)$/\1$val\2/" file.properties
    

    • ^(.*--server.address=) --server.address= 组#1中的子串和捕获
    • [^[:blank:]]*
    • (.*)$

    替换:

    • \1 :反向引用到捕获组#1
    • $val $val公司 代替

    FAILED_REQUEST_DIRECTORY=/bla/bla2 java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1234 -jar /xyz/abc-service-1.0-SNAPSHOT.jar --server.port=1111 --server.address=10.0.0.1 --kafka.bootstrap.servers=10.111.11.11:3197,10.112.12.111:3197,10.123.44.25:3197 --topic.pushcrew.encryptionKey=abc-def-egh --spring.application.name=name-sevice --fb.verification.token=token --management.trace.include.payload=true --topic.pushcrew.hits=activity-logs --max.block.ms=1000 --pager.duty.api.key=apikey --dsn=dsn

        2
  •  1
  •   RavinderSingh13 Nikita Bakshi    6 年前

    如果你同意的话 awk ,请尝试以下操作。(将输出保存到输入文件本身。) > temp_file && mv temp_file Input_file 以下代码)

    val='10.0.0.1'
    awk -v var="$val" '
    match($0,/--server\.address=[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/){
      val=substr($0,RSTART,RLENGTH)
      sub(/=.*/,"="var,val)
      print substr($0,1,RSTART-1) val substr($0,RSTART+RLENGTH)
      next
    }
    1
    '   Input_file
    

    FAILED_REQUEST_DIRECTORY=/bla/bla2 java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1234  -jar /xyz/abc-service-1.0-SNAPSHOT.jar --server.port=1111 --server.address=10.0.0.1 --kafka.bootstrap.servers=10.111.11.11:3197,10.112.12.111:3197,10.123.44.25:3197 --topic.pushcrew.encryptionKey=abc-def-egh --spring.application.name=name-sevice  --fb.verification.token=token --management.trace.include.payload=true --topic.pushcrew.hits=activity-logs --max.block.ms=1000 --pager.duty.api.key=apikey --dsn=dsn
    
    推荐文章