大家好我需要帮助使用linux脚本。
这是一个示例输入:
Login=Testtt/123
Password=Testtt/123
Login=eJwQwq12
Password=OjeEor/Kd
首先,我使用grep搜索模式,然后使用以下代码搜索awk
passStr=grep 'Passsword' test.param | awk -F= '{print $2}'
所以我得到了Testtt123然后使用passStr将它放入变量。
然后我使用
将替换字符串放入另一个变量中 passNew=ThisIsATest=
现在我需要替换passStr
中第二次出现的名为Testtt123的字符串,并使用变量ThisIsATest=
将其替换为passNew
我只有这段代码,但它取代了所有出现的字符串。
sed /$passStr/{s/$passStr/$passNew/} test.param
这里的问题是第二次出现在不同的行上。 还有其他密码出现,这使我很难使用awk,因为passStr将有两个可能的值。我只需要第一个密码。
接下来是有时密码的值包含斜杠。(更改了示例输入)
输出应该像
Login=Testtt123
Password=ThisIsATest=
Login=eJwQwq12
Password=OjeEor/Kd
我能得到任何帮助吗?
答案 0 :(得分:1)
sed "$!N;$s/${passStr}/${passNew}/2" test.param
默认情况下,sed是逐行的,你需要先将内容加载到工作缓冲区并在最后一行加载测试
答案 1 :(得分:0)
你对“第二次出现”过于复杂。只需搜索“密码”并替换“=”后面的内容
sed '/Password/ s/=.*/='"$passNew"/' file