免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2341 | 回复: 7
打印 上一主题 下一主题

[文本处理] 如何用shell修改文件内容,而不是通过 匹配、修改、重新导入的方法修改内容? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-05 19:21 |只看该作者 |倒序浏览
请教大神,
比如我要把文件a.log中所有  seed1  修改为 seed2,
我常用的方法是  1.匹配修改:  sed 's/seed1/seed2/g  a.log'  > temp
                      2.重导入:  cat temp > a.log

这种方法分两步,且要一个中间文件,
有没有一步修改的方法?

论坛徽章:
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
2 [报告]
发表于 2014-03-05 19:29 |只看该作者
可以使用 -i 参数, 不过, 本质上还是生成临时文件再 mv 回去, 只不过是这个过程不需要你手动了.

论坛徽章:
0
3 [报告]
发表于 2014-03-05 19:30 |只看该作者
  1. sed -i 's/seed1/seed2/g' a.log
  2. #-i inplace
复制代码

论坛徽章:
0
4 [报告]
发表于 2014-03-05 20:07 |只看该作者
回复 3# mfkp3

谢谢  
谢谢


   

论坛徽章:
0
5 [报告]
发表于 2014-03-05 20:08 |只看该作者
回复 2# q1208c


谢谢  
谢谢

请问你知不知道 如何恢复  rm 了的文件
只是rm 了 没有 rm -rf

   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
6 [报告]
发表于 2014-03-05 23:42 |只看该作者
加上-i参数~

论坛徽章:
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
7 [报告]
发表于 2014-03-06 07:45 |只看该作者
回复 5# shiwenze

加不加 -rf 的 rm 结果都是一样的.

简单的告诉你, 不能恢复.

技术上, 所有的删除文件操作, 都只是在 super block 里的操作, 不会真正把 inode 里的内容清空(也就是文件内容还在). 但在有些文件系统下, 会有特别的处理.

比如, 有些文件系统有 自动的碎片清理 功能, 那么, 如果你删了文件, 结果正好赶上文件系统的自清理, 可能你的文件内容就保不住了. 所以, 简单的说不能恢复, 是不想你浪费太多的时间, 结果, 又找不回你想要的东西. 还是早点想别的办法比较好.

另外, 在 学习 UNIX 的第一课, 就应该知道这一点, 所以, 备份是至关重要的. 不管对于企业, 还是个人.
   

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
8 [报告]
发表于 2014-03-06 08:00 |只看该作者
如果系统里的sed不支持-i 参数,就用perl
  1. perl -i.bak -pe "s/seed1/seed2/g"  *.log
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP