免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: nimoncoffee
打印 上一主题 下一主题

unix 下面进行批处理操作替换某句话的命令 [复制链接]

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
11 [报告]
发表于 2005-11-21 18:20 |只看该作者
原帖由 bingosek 于 2005-11-21 18:13 发表

你可以做一个重定向,我只不过是给出sed替换的一种语法

论坛徽章:
0
12 [报告]
发表于 2005-11-21 20:16 |只看该作者
给你个例子好了
将当前目录下所有包含 abc 的文件中的 abc 替换成 xyz(包括搜索子目录)

  1. # sed -i 's/abc/xyz/g' `grep -rl "abc" .`
复制代码

论坛徽章:
0
13 [报告]
发表于 2005-11-21 20:24 |只看该作者
sed -i   ?
-i 是什么意思啊?

论坛徽章:
0
14 [报告]
发表于 2005-11-21 21:52 |只看该作者
-i 就可以不用将sed的结果重定向然后再覆盖回原来的文件,sed会直接修改原来的文件
可以看看sed的manual

这个问题其实很简单,可以这样写命令:

cat *.jsp | sed -i "s/aaa/bbb/g"

论坛徽章:
0
15 [报告]
发表于 2005-11-21 21:58 |只看该作者
vi可以
命令模式下
1,$ s/原来的字段/要改的字段/g

论坛徽章:
0
16 [报告]
发表于 2005-11-21 22:03 |只看该作者

  1. for jspfile in $(echo *)
  2. do
  3. sed -i 's/abc/xyz/g' $jspfile
  4. done
复制代码

论坛徽章:
0
17 [报告]
发表于 2005-11-22 10:01 |只看该作者
我用sed -e 's/abc/xyz/g'  *.jsp确实替换了我想要替换的字段,他显示出来所有的jsp文件的内容,
但是原来文件的内容还是原来的样子,请问怎么来覆盖原来的所有jsp文件?
我还是个初学者,请大家多多指教,谢谢!

论坛徽章:
0
18 [报告]
发表于 2005-11-22 10:54 |只看该作者
原帖由 kartwall 于 2005-11-21 21:52 发表
-i 就可以不用将sed的结果重定向然后再覆盖回原来的文件,sed会直接修改原来的文件
可以看看sed的manual

这个问题其实很简单,可以这样写命令:

cat *.jsp | sed -i "s/aaa/bbb/g"


cat *.jsp这样不行吧?

论坛徽章:
0
19 [报告]
发表于 2005-11-22 11:32 |只看该作者
cat *.jsp | sed -e 's/aaa/bbb/g'的效果跟sed -e 's/abc/xyz/g'  *.jsp得出的结果是一样的

论坛徽章:
0
20 [报告]
发表于 2005-11-22 11:41 |只看该作者
原帖由 采风 于 2005-11-22 10:54 发表


cat *.jsp这样不行吧?

肯定不行
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP