【问题标题】:Sed search and replace on variable stringSed搜索和替换变量字符串
【发布时间】:2016-08-09 04:07:45
【问题描述】:

我正在尝试使用 sed 在 Mac 终端上的文件中搜索和替换字符串。我可以搜索和替换一个简单的字符串:

sed -i.bak 's/HOSTS/BOASTS/g' file.txt

但我正在尝试一些更复杂的东西,基本上我想要替换的字符串看起来像 'HOSTS:"123.123.123.123, 12345"' - 123.123.123.123 是一个可变 IP,所以我可以'不完全搜索,所以我尝试使用正则表达式,主要是“。”表示我不知道 IP 地址是什么。

我尝试了以下方法,但没有成功:

sed -i.bak 's/HOSTS:"., 00000"/HOSTS:"999.999.999.999, 00000"/g' file.txt

【问题讨论】:

    标签: sed


    【解决方案1】:

    您可以尝试以下方法:

    echo "HOSTS:\"123.123.123.123, 12345\"" | sed -e 's/[0-9][0-9][0-9]\.[0-9][0-9][0-9]\.[0-9][0-9][0-9]\.[0-9][0-9][0-9]/999.999.999.999/g'.
    

    每个[0-9] 都会查找一个数字,每个\. 都是实际符号,而不是sed 上的“匹配字符”符号。这假设 IP 将始终具有这种结构。如果您处理的是xxx.xxx.xxx.xxx:xxxx,则必须进行相应的编辑。

    【讨论】:

    • 我建议使用更宽松的 IP 正则表达式:[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/,其中 '\+' 表示 1 个或多个前面的字符 这适用于 IP 地址,例如 4.2.2.2(有效 IP)。
    猜你喜欢
    • 1970-01-01
    • 2018-12-05
    • 2021-06-21
    • 1970-01-01
    • 2012-05-05
    • 2017-08-02
    • 2017-06-29
    • 1970-01-01
    相关资源
    最近更新 更多