首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用变量替换每隔一次出现的模式

使用变量替换每隔一次出现的模式
EN

Stack Overflow用户
提问于 2014-10-01 10:36:02
回答 2查看 52关注 0票数 0

嗨,伙计们,我需要使用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

有什么可以帮我的吗?

EN

回答 2

Stack Overflow用户

发布于 2014-10-01 14:20:30

代码语言:javascript
运行
复制
sed "$!N;$s/${passStr}/${passNew}/2" test.param

默认情况下,sed是逐行进行的,您需要首先将内容加载到工作缓冲区中,然后在最后一行加载测试

票数 1
EN

Stack Overflow用户

发布于 2014-10-01 19:02:38

你把“第二次发生”说得太复杂了。只需搜索"Password“并替换"=”后面的内容

代码语言:javascript
运行
复制
sed '/Password/ s/=.*/='"$passNew"/' file
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26133268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档