簡體   English   中英

sed僅在一行上起作用

[英]sed only works on one line

由於某種原因,它僅在我的腳本中執行sed的第一行。 據我所知,第二行沒有運行。 我忘記了什么嗎? 我已經編輯了好幾個小時了。

腳本:

#!/bin/bash

#Locations
LocationOne="$SERVER_DIR/config.yml"

if [ -f "$LocationOne" ]
  then
    cd "$SERVER_DIR"
      sed -i "s/^.*\shost:.*/  host: $IP:$PORT/g" $SERVER_DIR/config.yml
      sed -i "s/^.*\sip_forward: false/  ip_forward: true/g" $SERVER_DIR/config.yml
fi
exit 0

config.yml:

listeners:
- query_port: XXXXX
  host: XXX.XXX.XXX.XXX:XXXXX
timeout: 30000
connection_throttle: 4000
ip_forward: false
online_mode: true

第一次發布,請保持友好:)我將根據需要進行編輯。

您需要通過在\\s之后添加*來使ip_forward前面的空白為可選。

在示例輸入中, ip_forward前面沒有空格字符,因此您的表達式不匹配,因為它至少需要空格字符。

#!/bin/bash

#Locations
LocationOne="$SERVER_DIR/config.yml"

if [ -f "$LocationOne" ]
  then
    cd "$SERVER_DIR"
      sed -i "s/^.*\s*host:.*/  host: $IP:$PORT/g" $SERVER_DIR/config.yml
      sed -i "s/^.*\s*ip_forward: false/  ip_forward: true/g" $SERVER_DIR/config.yml
fi

另外,您要在ip_forward前面匹配.* ,它可以是任意數量的任何字符(不包括換行符),我不確定這是否是意圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM