用管道符实现此功能
[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 即可。
是这样么?
想了一下, 也不知道你参数那些固定与否都不知道, 匹配也很麻烦,
本来你这行语句也不复杂,所幸你全部都替换得了, 这样处理最直接.
演示如下:
[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
------------------------------------------------------
闲着没事,详细的跟你解答了~~望采纳
副食店发生大