一个shell脚本关于sed替换的问题,求高手解答

有一个配置文件test.conf里面有几行数据例如name=zhangsanorlisi注意有可能配置文件中有很多这样的,有些=号前后有空格有些没有替换成name=wan... 有一个配置文件 test.conf 里面有几行数据 例如 name = zhangsan or lisi 注意有可能配置文件中有很多这样的,有些=号前后有空格 有些没有 替换成 name=wangwu 请问如何写sed替换 展开
 我来答
傲慢的王子啊
2014-03-05 · TA获得超过162个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:159万
展开全部
用管道符实现此功能

[root@localhost ~]# cat file

name = zhangsan

name = lisi

name = root

name=zhangsan

name=lisi

name=root

[root@localhost ~]# sed 's/name = zhangsan/name = wangwu/g' file |  sed 's/name = lisi/name = wangwu/g' | sed 's/name=zhangsan/name=wangwu/g' |  sed 's/name=lisi/name=wangwu/g'

name = wangwu

name = wangwu

name = root

name=wangwu

name=wangwu

name=root
hqxz556
2014-03-05 · TA获得超过2831个赞
知道大有可为答主
回答量:1686
采纳率:93%
帮助的人:574万
展开全部
这个只能详细寻问楼主的诉求。

楼主要做的是否是:
将以 name = **** 这样的内容换成 name=wangwu 这个内容。其中 name = 的等号前后的空格可有可无,而 **** 的内容我们不需要关注,只需统一替换成 wangwu 即可。

是这样么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
catmoderny
2014-03-05 · TA获得超过167个赞
知道小有建树答主
回答量:366
采纳率:0%
帮助的人:153万
展开全部
想了一下, 也不知道你参数那些固定与否都不知道, 匹配也很麻烦,
本来你这行语句也不复杂,所幸你全部都替换得了, 这样处理最直接.
演示如下:

[root@agent ~]# more file.txt
aaaaaaaaaaaaaaa
bbbbbbbbbbb
cccccccccc
action=-i hehe -j haha -l
ddddddd
[root@agent ~]# sed '/action=/c\action=-i para1 -j para2 -l' file.txt
aaaaaaaaaaaaaaa
bbbbbbbbbbb
cccccccccc
action=-i para1 -j para2 -l
ddddddd
[root@agent ~]#

实现了你所说的要求了吧~
如果你觉得这个麻烦,你可以把这个语句写一个小脚本,para1和para2用$1,$2替换
脚本如下:
#!/bin/bash
#sed_replace.sh

sed '/action=/c\action=-i $1 -j $2 -l' $3 ($3 表示你将操作的文件)
执行情况如下:
[root@agent ~]#sh sed_replace.sh para1 para2 file.txt > output.txt
[root@agent ~]#more output.txt
aaaaaaaaaaaaaaa
bbbbbbbbbbb
cccccccccc
action=-i para1 -j para2 -l
ddddddd

------------------------------------------------------
闲着没事,详细的跟你解答了~~望采纳
副食店发生大
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式