一个shell脚本关于sed替换的问题,求高手解答
有一个配置文件test.conf里面有几行数据例如name=zhangsanorlisi注意有可能配置文件中有很多这样的,有些=号前后有空格有些没有替换成name=wan...
有一个配置文件 test.conf 里面有几行数据 例如 name = zhangsan or lisi 注意有可能配置文件中有很多这样的,有些=号前后有空格 有些没有 替换成 name=wangwu 请问如何写sed替换
展开
展开全部
用管道符实现此功能
[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
展开全部
这个只能详细寻问楼主的诉求。
楼主要做的是否是:
将以 name = **** 这样的内容换成 name=wangwu 这个内容。其中 name = 的等号前后的空格可有可无,而 **** 的内容我们不需要关注,只需统一替换成 wangwu 即可。
是这样么?
楼主要做的是否是:
将以 name = **** 这样的内容换成 name=wangwu 这个内容。其中 name = 的等号前后的空格可有可无,而 **** 的内容我们不需要关注,只需统一替换成 wangwu 即可。
是这样么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
想了一下, 也不知道你参数那些固定与否都不知道, 匹配也很麻烦,
本来你这行语句也不复杂,所幸你全部都替换得了, 这样处理最直接.
演示如下:
[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
------------------------------------------------------
闲着没事,详细的跟你解答了~~望采纳
副食店发生大
本来你这行语句也不复杂,所幸你全部都替换得了, 这样处理最直接.
演示如下:
[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
------------------------------------------------------
闲着没事,详细的跟你解答了~~望采纳
副食店发生大
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询