嗨,伙计们,我需要使用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=
现在我需要替换第二次出现的名为Testtt123的字符串,它位于passStr
中,并使用变量passNew
将其替换为ThisIsATest=
我只有这段代码,但它替换了所有出现的字符串。
sed /$passStr/{s/$passStr/$passNew/} test.param
这里的问题是第二次出现在不同的行上。还有其他密码的出现,这使得我很难使用awk,因为passStr将有两个可能的值。我只需要第一个密码。
其次,有时密码的值包含斜杠。(更改了示例输入)
输出应如下所示
Login=Testtt123 Password=ThisIsATest= Login=eJwQwq12 Password=OjeEor/Kd
有什么可以帮我的吗?
发布于 2014-10-01 06:20:30
sed "$!N;$s/${passStr}/${passNew}/2" test.param
默认情况下,sed是逐行进行的,您需要首先将内容加载到工作缓冲区中,然后在最后一行加载测试
发布于 2014-10-01 11:02:38
你把“第二次发生”说得太复杂了。只需搜索"Password“并替换"=”后面的内容
sed '/Password/ s/=.*/='"$passNew"/' file
https://stackoverflow.com/questions/26133268
复制相似问题