免费注册 查看新帖 |

Chinaunix

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

[文本处理] sed读取配置批量替换 [复制链接]

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
11 [报告]
发表于 2013-11-21 17:45 |只看该作者
回复 4# yestreenstars


    为什么文件内容没有被重写?好神奇

论坛徽章:
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
12 [报告]
发表于 2013-11-21 17:46 |只看该作者
  1. [root@localhost ~]# head test/*
  2. ==> test/a <==
  3. 1
  4. 2
  5. 3
  6. <SERVERID>
  7. 4

  8. ==> test/b <==
  9. 5555
  10. <SERVERID>
  11. <SERVER_NAME> fdsaf

  12. ==> test/c <==
  13. server_name=<server_name>
  14. [root@localhost ~]# cat t
  15. <SERVERID> 1
  16. <SERVER_NAME> aaaaa
  17. [root@localhost ~]# find /root/test -type f | xargs awk -vIGNORECASE=1 'NR==FNR{a[$1]=$2;next}{for(i in a)gsub(i,a[i])}{print > FILENAME}' t
  18. [root@localhost ~]# head test/*
  19. ==> test/a <==
  20. 1
  21. 2
  22. 3
  23. 1
  24. 4

  25. ==> test/b <==
  26. 5555
  27. 1
  28. aaaaa fdsaf

  29. ==> test/c <==
  30. server_name=aaaaa
  31. [root@localhost ~]#
复制代码
效率嘛,我没大量数据可测~

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
13 [报告]
发表于 2013-11-21 17:46 |只看该作者
回复 10# 关阴月飞


    这个配置文件要手动维护的,没办法自动生成,老是改脚本不是好方法呀,这样容易把脚本改出问题

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
14 [报告]
发表于 2013-11-21 17:46 |只看该作者
难不成 awk 是 根据行号对应重写行的?

论坛徽章:
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
15 [报告]
发表于 2013-11-21 17:49 |只看该作者
回复 14# reyleon
你之前不是也接触过吗?
print expr-list >file Prints  expressions  on file.  Each expression is separated by the value of the OFS variable.  The output record
                             is terminated with the value of the ORS variable.


   

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
16 [报告]
发表于 2013-11-21 17:55 |只看该作者
回复 12# yestreenstars


    不知怎么了,用awk来匹配替换写文件不太自信,等会我试试看

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
17 [报告]
发表于 2013-11-21 18:06 |只看该作者
回复 15# yestreenstars


    但这个读也是这个文件,写也是这个文件,是同一个文件呐

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
18 [报告]
发表于 2013-11-21 18:09 |只看该作者
本帖最后由 关阴月飞 于 2013-11-21 18:09 编辑

回复 12# yestreenstars


    这对同时对同一文件又读又写的,感觉不太稳当,容易随机地出现各种神秘现象, 感觉还是整个大循环,先写临时文件,再mv来的放心。

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
19 [报告]
发表于 2013-11-21 18:14 |只看该作者
关阴月飞 发表于 2013-11-21 18:09
回复 12# yestreenstars


不是,按理不能又读又写,比如:
  1. [root@centos6-1 testf]# seq 10 > file
  2. [root@centos6-1 testf]# sort -r file > file
复制代码
这样是先清空了file文件,因为标准输出和标准错误的管道的优先级要高,然后再对file文件排序,但是这个时候已经没内容了还怎么读啊?

--------------

引用网中人的话:

  1. $ cat < file > file
  2. $ cat < file
  3. 复制代码


  4. 嗯?﹗注意到沒有?﹗﹗
  5. ---- 怎麼最後那個 cat 命令看到的 file 竟是空的?﹗
  6. why? why? why?

  7. 同學們:下節課不要遲到囉~~~!


  8. --------------
  9. 11.5
  10. 噹噹噹~~~ 上課囉~~~ ^_^

  11. 前面提到:$ cat < file > file 之後原本有內容的檔案結果卻被洗掉了﹗
  12. 要理解這一現像其實不難,這只是 priority 的問題而已:
  13. * 在 IO Redirection 中,stdout 與 stderr 的管道會先準備好,才會從 stdin 讀進資料。
  14. 也就是說,在上例中,> file 會先將 file 清空,然後才讀進 < file ,
  15. 但這時候檔案已經被清空了,因此就變成讀不進任何資料了...
复制代码

论坛徽章:
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
20 [报告]
发表于 2013-11-21 18:41 |只看该作者
回复 18# 关阴月飞
其实我也不太清楚具体的流程,但感觉是借助临时文件处理的~

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP