使用 BASH 编辑文件以更改未知值
Edit a file using BASH to change unknown values
我正在尝试弄清楚如何使用简单 BASH
更改文件的某些部分
基本上我想从这里开始
之前:
parameter0.1=value
parameter0.2=value
parameter0.3=https://changeme/donotchangeme
parameter0.4=ABCD
parameter1.1=value
parameter1.2=value
parameter1.3=https://changeme/donotchangeme
parameter1.4=WXYZ
对此
之后:
parameter0.1=value
parameter0.2=value
parameter0.3=https://changed/donotchangeme
parameter0.4=QWERTY
parameter1.1=value
parameter1.2=value
parameter1.3=https://changed/donotchangeme
parameter1.4=QWERTY
但是,我不知道 "changeme"、"ABCD" 或 "WXYZ" 的实际值是多少。所以我无法进行查找和替换。
有什么想法吗?
假设您给定的输入存储在 input.txt
中,那么下面的 sed
命令应该可以满足您的要求。
cat input.txt | sed -e '/parameter.\.3=/s_=https://[^/]*_=https://changed_' -e '/parameter.\.4=/s_=.*$_=QWERTY_'
简而言之,不要搜索您要替换的文本(您不知道),而是搜索所述文本周围的文本并进行相应替换。
我正在尝试弄清楚如何使用简单 BASH
更改文件的某些部分基本上我想从这里开始
之前:
parameter0.1=value
parameter0.2=value
parameter0.3=https://changeme/donotchangeme
parameter0.4=ABCD
parameter1.1=value
parameter1.2=value
parameter1.3=https://changeme/donotchangeme
parameter1.4=WXYZ
对此
之后:
parameter0.1=value
parameter0.2=value
parameter0.3=https://changed/donotchangeme
parameter0.4=QWERTY
parameter1.1=value
parameter1.2=value
parameter1.3=https://changed/donotchangeme
parameter1.4=QWERTY
但是,我不知道 "changeme"、"ABCD" 或 "WXYZ" 的实际值是多少。所以我无法进行查找和替换。
有什么想法吗?
假设您给定的输入存储在 input.txt
中,那么下面的 sed
命令应该可以满足您的要求。
cat input.txt | sed -e '/parameter.\.3=/s_=https://[^/]*_=https://changed_' -e '/parameter.\.4=/s_=.*$_=QWERTY_'
简而言之,不要搜索您要替换的文本(您不知道),而是搜索所述文本周围的文本并进行相应替换。