gpt4 book ai didi

linux - sed 只适用于一行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:20 25 4
gpt4 key购买 nike

出于某种原因,它只执行我脚本中的第一行 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

配置文件:

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 前面匹配 .* 这是任意数量的任意字符(不包括换行符),我不确定如果那是意图。

关于linux - sed 只适用于一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31631286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com