免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求助!提取文件指定文本替换到文件中指定地方[已解决] [复制链接]

论坛徽章:
1
双鱼座
日期:2014-08-25 19:13:11
31 [报告]
发表于 2014-09-01 11:09 |只看该作者

多谢,再也不担心我的正则啦

回复 30# Herowinter


   

论坛徽章:
1
水瓶座
日期:2014-08-30 00:42:21
32 [报告]
发表于 2014-09-01 11:47 |只看该作者
回复 27# Herowinter


我运行报错了!

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
33 [报告]
发表于 2014-09-01 13:12 |只看该作者
本帖最后由 Herowinter 于 2014-09-01 13:27 编辑

回复 32# xiao_244

请用我28楼的代码,27楼的是我没环境手写的,是有点问题.
28楼的我早上测试过了,如果还有问题,请贴出你的初始文本,
执行代码,错误提示.

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
34 [报告]
发表于 2014-09-01 13:48 |只看该作者
sed '/0x00000005/{h;s/.*"\(.*\):\(.*\):\(.*\):\(.*\):\(.*\):\(.*"\)/obj.id = "0x00000019" ; obj.value = "12345\1\2\3\4\5\6/;x};/0x00000019/{g}' file

论坛徽章:
1
水瓶座
日期:2014-08-30 00:42:21
35 [报告]
发表于 2014-09-03 20:49 |只看该作者
本帖最后由 xiao_244 于 2014-09-03 20:49 编辑

回复 33# Herowinter

WAP(Dopra Linux) #cat mac.txt
obj.id = "0x00000007" ; obj.value = "021VQR3GE2161594";
obj.id = "0x00000008" ; obj.value = "631458q5e2";
obj.id = "0x00000009" ; obj.value = "";
obj.id = "0x0000000a" ; obj.value = "D8:49:0B:3D:74:2D";
obj.id = "0x0000000b" ; obj.value = "65:D9:80:13:00:0B";
obj.id = "0x00000022" ; obj.value = "";
obj.id = "0x00000023" ; obj.value = "";
obj.id = "0x00000024" ; obj.value = "";
obj.id = "0x0000000c" ; obj.value = "D8:49:0B:3D:74:2E";
obj.id = "0x0000000d" ; obj.value = "D8:49:0B:3D:74:2F";
obj.id = "0x0000000e" ; obj.value = "D8:49:0B:3D:74:30";
obj.id = "0x00000013" ; obj.value = "D8:49:0B:3D:74:35";
obj.id = "0x00000016" ; obj.value = "738011635059";
WAP(Dopra Linux) # m=`sed -nr '0,/0x0000000a/{//s/.*= "(([0-9A-Fa-f]{2}:){3}).*/\1/p}' mac.txt`; sed "s/$m/22:33:44:/" mac.txt
sed: no previous regexp
WAP(Dopra Linux) #
WAP(Dopra Linux) #

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
36 [报告]
发表于 2014-09-04 13:08 |只看该作者
本帖最后由 Herowinter 于 2014-09-04 13:22 编辑

回复 35# xiao_244

这个文本,我这边这段代码执行没问题的,前面算变量m的sed代码应该
有些特性在你的系统里不支持,导致m为空,然后s命令就会有问题。

  1. [root@lnx-rh6-x64 zzz]# m=`sed -nr '0,/0x0000000a/{//s/.*= "(([0-9A-Fa-f]{2}:){3}).*/\1/p}' mac.txt`;echo $m
  2. D8:49:0B:
  3. [root@lnx-rh6-x64 zzz]# sed "s//22/" mac.txt
  4. sed: -e expression #1, char 0: no previous regular expression
  5. [root@lnx-rh6-x64 zzz]#
复制代码
改成这样严谨一点,但你的系统估计还是不行,也许不支持//
  1. m=`sed -nr '0,/0x0000000a/{//s/.*= "(([0-9A-Fa-f]{2}:){3}).*/\1/p}' mac.txt`;[ -n "$m" ]&&sed "s/$m/22:33:44:/" mac.txt
  2. obj.id = "0x00000007" ; obj.value = "021VQR3GE2161594";
  3. obj.id = "0x00000008" ; obj.value = "631458q5e2";
  4. obj.id = "0x00000009" ; obj.value = "";
  5. obj.id = "0x0000000a" ; obj.value = "22:33:44:3D:74:2D";
  6. obj.id = "0x0000000b" ; obj.value = "65:D9:80:13:00:0B";
  7. obj.id = "0x00000022" ; obj.value = "";
  8. obj.id = "0x00000023" ; obj.value = "";
  9. obj.id = "0x00000024" ; obj.value = "";
  10. obj.id = "0x0000000c" ; obj.value = "22:33:44:3D:74:2E";
  11. obj.id = "0x0000000d" ; obj.value = "22:33:44:3D:74:2F";
  12. obj.id = "0x0000000e" ; obj.value = "22:33:44:3D:74:30";
  13. obj.id = "0x00000013" ; obj.value = "22:33:44:3D:74:35";
  14. obj.id = "0x00000016" ; obj.value = "738011635059";
复制代码
可以试一下这段代码,我去掉了//,也许可以。
  1. m=`sed -nr '/0x0000000a/{s/.*= "(([0-9A-Fa-f]{2}:){3}).*/\1/p;q}' mac.txt`;[ -n "$m" ]&&sed "s/$m/22:33:44:/" mac.txt
  2. obj.id = "0x00000007" ; obj.value = "021VQR3GE2161594";
  3. obj.id = "0x00000008" ; obj.value = "631458q5e2";
  4. obj.id = "0x00000009" ; obj.value = "";
  5. obj.id = "0x0000000a" ; obj.value = "22:33:44:3D:74:2D";
  6. obj.id = "0x0000000b" ; obj.value = "65:D9:80:13:00:0B";
  7. obj.id = "0x00000022" ; obj.value = "";
  8. obj.id = "0x00000023" ; obj.value = "";
  9. obj.id = "0x00000024" ; obj.value = "";
  10. obj.id = "0x0000000c" ; obj.value = "22:33:44:3D:74:2E";
  11. obj.id = "0x0000000d" ; obj.value = "22:33:44:3D:74:2F";
  12. obj.id = "0x0000000e" ; obj.value = "22:33:44:3D:74:30";
  13. obj.id = "0x00000013" ; obj.value = "22:33:44:3D:74:35";
  14. obj.id = "0x00000016" ; obj.value = "738011635059";
复制代码

论坛徽章:
1
水瓶座
日期:2014-08-30 00:42:21
37 [报告]
发表于 2014-09-04 14:58 |只看该作者
回复 36# Herowinter

最后那个可以了~!!在这里真心非常感谢Herowinter一直为我这个事情忙这么久~!!  

论坛徽章:
0
38 [报告]
发表于 2014-09-09 12:13 |只看该作者
[root@localhost test]# cat 12
obj.id = "0x00000005" ; obj.value = "08:AC:86:1E:98:43";
obj.id = "0x00000006" ; obj.value = "08:AC:86:1E:98:46";
obj.id = "0x00000019" ; obj.value = "";
obj.id = "0x00000020" ; obj.value = "08:AC:86:1E:98:21";
obj.id = "0x00000021" ; obj.value = "hore"
[root@localhost test]#  sed '/0x00000005/h;/0x00000019/{g;s/://g;s/05/19/;s/"\(.\{12\}\)";$/"12345\1";/}' 12
obj.id = "0x00000005" ; obj.value = "08:AC:86:1E:98:43";
obj.id = "0x00000006" ; obj.value = "08:AC:86:1E:98:46";
obj.id = "0x00000019" ; obj.value = "1234508AC861E9843";
obj.id = "0x00000020" ; obj.value = "08:AC:86:1E:98:21";
obj.id = "0x00000021" ; obj.value = "hore"
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP