【发布时间】:2015-03-12 21:38:59
【问题描述】:
需要有关如何在 UNIX 中使用 SED 或 AWK 命令解决此问题的解决方案。
我有一个源文件,其值必须按如下方式填充。 (必须从参考文件中获取值并更新源文件)。
源文件:
aaaa
Uid=xxxx
pwd=nnnn
bbbb
uid=yyyy
pwd=eeee
cccc
uid=zzzz
pwd=kkkk
参考文件:
block, parameter, value
aaaa, uid, 1a1a
aaaa, pwd, 1b1b
bbbb, uid, 2a2a
bbbb, pwd, 2b2b
cccc, uid, 3a3a
cccc, pwd, 3b3b
输出文件:
aaaa
Uid=1a1a
pwd=1b1b
bbbb
uid=2a2a
pwd=2b2b
cccc
uid=3a3a
pwd=3b3b
要求:
对于 aaaa,SED 必须在第 1 行和第 3 行中搜索 Uid,并替换“=”之后的值。即,带有 1a1a 的 xxxx。
对于 bbbb,SED 必须在第 5 行和第 7 行内搜索 Uid,并替换“=”之后的值。即 yyyy 与 2a2a。
其他参数也是如此。
谢谢。
【问题讨论】:
-
请使用编辑按钮并以可读的方式格式化问题。此外,这看起来与您之前的问题非常相似。你用过它的答案吗?
-
它没有按我的预期工作。在 SED 中指定行号是一种方法。但就我而言,我传递的所有值都是变量,因此面临一些问题。顺便说一句,这是给出的最合适的建议...... sed -e '$str_val,${end_val}s/string/replace/' filename.txt...... 这仅适用于 1 次出现,比如说对于“aaaa”。
-
如我之前所说:使用
edit按钮将此信息添加到问题中,使问题更清晰。 -
抱歉...当时不知道。