免费注册 查看新帖 |

Chinaunix

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

求个sed语句,想了好久都没想对,谢谢! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-28 14:30 |只看该作者 |倒序浏览
  1. [{"slot_id":"A01","pid":101},{"slot_id":"A02","pid":102},{"slot_id":"A03","pid":103},
  2.                         {"slot_id":"A04","pid":104},{"slot_id":"A05","pid":105},{"slot_id":"A06","pid":106},
  3.                         {"slot_id":"A07","pid":107},{"slot_id":"A08","pid":108},{"slot_id":"A09","pid":109},
  4.                         {"slot_id":"A10","pid":110},{"slot_id":"A11","pid":111},
  5.                         {"slot_id":"B01","pid":201},{"slot_id":"B02","pid":202},{"slot_id":"B03","pid":203},
  6.                         {"slot_id":"B04","pid":204},{"slot_id":"B05","pid":205},{"slot_id":"B06","pid":206},
  7.                         {"slot_id":"B07","pid":207},{"slot_id":"B08","pid":208},{"slot_id":"B09","pid":209},
  8.                         {"slot_id":"B10","pid":210},{"slot_id":"B11","pid":211},
  9.                         {"slot_id":"C01","pid":301},{"slot_id":"C02","pid":302},{"slot_id":"C03","pid":303},
  10.                         {"slot_id":"C04","pid":304},{"slot_id":"C05","pid":305},{"slot_id":"C06","pid":306},
  11.                         {"slot_id":"C07","pid":307},{"slot_id":"C08","pid":308},{"slot_id":"C09","pid":309},
  12.                         {"slot_id":"C10","pid":310},{"slot_id":"C11","pid":311},
  13.                         {"slot_id":"D01","pid":401},{"slot_id":"D02","pid":402},{"slot_id":"D03","pid":403},
  14.                         {"slot_id":"D04","pid":404},{"slot_id":"D05","pid":405},{"slot_id":"D06","pid":406},
  15.                         {"slot_id":"D07","pid":407},{"slot_id":"D08","pid":408},{"slot_id":"D09","pid":409},
  16.                         {"slot_id":"D10","pid":410},{"slot_id":"D11","pid":411},
  17.                         {"slot_id":"E01","pid":501},{"slot_id":"E02","pid":502},{"slot_id":"E03","pid":503},
  18.                         {"slot_id":"F01","pid":601},{"slot_id":"F02","pid":602},{"slot_id":"F03","pid":603},
  19.                         {"slot_id":"G01","pid":701},{"slot_id":"G02","pid":702},{"slot_id":"G03","pid":703},
  20.                         {"slot_id":"H01","pid":801},{"slot_id":"H02","pid":802},{"slot_id":"H03","pid":803},
  21.                         {"slot_id":"I01","pid":901},{"slot_id":"I02","pid":902},{"slot_id":"I03","pid":503}]
复制代码
这是python里面的列表,列表里面是字典。
我想着想要每一项都加些内容
比如{"slot_id":"C07","pid":307}变成{"slot_id":"C07","pid":307,"quantity":12,"pname":"product_for_C07"}
"quantity":12,"pname":"product_for_增加的这段内容是固定的,C07和slot_id后面的C07是一样的。

我自己写了个sed语句,本来想先找到数字,替换成一个别的东西的。比如
sed  's/\[0-9]{3}/[&]/g'  file
希望307这样的数字替换成[307]的,但是最简单的都没有成功。

希望大家帮忙,谢谢指教。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2012-02-28 14:34 |只看该作者
sed  's/[0-9]\{3\}/[&]/g'  file

论坛徽章:
0
3 [报告]
发表于 2012-02-28 14:54 |只看该作者
回复 2# blackold
谢谢您的回复,这条语句确实正确,不过请问下为什么是\{\}呢?
我用sed  's/[0-9]\{3\}/&"quantity":12,"pname":"product_for_"/g'  file没问题吧?
还有因为我想要替换的字段有一部分内容是前面有的,就是上面提到的C07,所以我希望用\1 \2的方式写,请问该怎么写呢?


   

论坛徽章:
0
4 [报告]
发表于 2012-02-28 14:56 |只看该作者
我希望的最终效果如下,当然换行无所谓,这次其实我已经手动改了,只是希望学习下:
[{"slot_id":"A01","pid":101,"quantity":12,"pname":"product_for_A01"},{"slot_id":"A02","pid":102,"quantity":12,"pname":"product_for_A02"},
                        {"slot_id":"A03","pid":103,"quantity":12,"pname":"product_for_A03"},
                        {"slot_id":"A04","pid":104,"quantity":12,"pname":"product_for_A04"},{"slot_id":"A05","pid":105,"quantity":12,"pname":"product_for_A05"},
                        {"slot_id":"A06","pid":106,"quantity":12,"pname":"product_for_A06"},
                        {"slot_id":"A07","pid":107,"quantity":12,"pname":"product_for_A07"},{"slot_id":"A08","pid":108,"quantity":12,"pname":"product_for_A08"},
                        {"slot_id":"A09","pid":109,"quantity":12,"pname":"product_for_A09"},
                        {"slot_id":"A10","pid":110,"quantity":12,"pname":"product_for_A10"},{"slot_id":"A11","pid":111,"quantity":12,"pname":"product_for_A11"},
                        {"slot_id":"B01","pid":201,"quantity":12,"pname":"product_for_B01"},{"slot_id":"B02","pid":202,"quantity":12,"pname":"product_for_B02"},
                        {"slot_id":"B03","pid":203,"quantity":12,"pname":"product_for_B03"},
                        {"slot_id":"B04","pid":204,"quantity":12,"pname":"product_for_B04"},{"slot_id":"B05","pid":205,"quantity":12,"pname":"product_for_B05"},
                        {"slot_id":"B06","pid":206,"quantity":12,"pname":"product_for_B06"},
                        {"slot_id":"B07","pid":207,"quantity":12,"pname":"product_for_B07"},{"slot_id":"B08","pid":208,"quantity":12,"pname":"product_for_B08"},
                        {"slot_id":"B09","pid":209,"quantity":12,"pname":"product_for_B09"},
                        {"slot_id":"B10","pid":210,"quantity":12,"pname":"product_for_B10"},{"slot_id":"B11","pid":211,"quantity":12,"pname":"product_for_B11"},
                        {"slot_id":"C01","pid":301,"quantity":12,"pname":"product_for_C01"},{"slot_id":"C02","pid":302,"quantity":12,"pname":"product_for_C02"},
                        {"slot_id":"C03","pid":303,"quantity":12,"pname":"product_for_C03"},
                        {"slot_id":"C04","pid":304,"quantity":12,"pname":"product_for_C04"},{"slot_id":"C05","pid":305,"quantity":12,"pname":"product_for_C05"},
                        {"slot_id":"C06","pid":306,"quantity":12,"pname":"product_for_C06"},
                        {"slot_id":"C07","pid":307,"quantity":12,"pname":"product_for_C07"},{"slot_id":"C08","pid":308,"quantity":12,"pname":"product_for_C08"},
                        {"slot_id":"C09","pid":309,"quantity":12,"pname":"product_for_C09"},
                        {"slot_id":"C10","pid":310,"quantity":12,"pname":"product_for_C10"},{"slot_id":"C11","pid":311,"quantity":12,"pname":"product_for_C11"},
                        {"slot_id":"D01","pid":401,"quantity":12,"pname":"product_for_D01"},{"slot_id":"D02","pid":402,"quantity":12,"pname":"product_for_D02"},
                        {"slot_id":"D03","pid":403,"quantity":12,"pname":"product_for_D03"},
                        {"slot_id":"D04","pid":404,"quantity":12,"pname":"product_for_D04"},{"slot_id":"D05","pid":405,"quantity":12,"pname":"product_for_D05"},
                        {"slot_id":"D06","pid":406,"quantity":12,"pname":"product_for_D06"},
                        {"slot_id":"D07","pid":407,"quantity":12,"pname":"product_for_D07"},{"slot_id":"D08","pid":408,"quantity":12,"pname":"product_for_D08"},
                        {"slot_id":"D09","pid":409,"quantity":12,"pname":"product_for_D09"},
                        {"slot_id":"D10","pid":410,"quantity":12,"pname":"product_for_D10"},{"slot_id":"D11","pid":411,"quantity":12,"pname":"product_for_D11"},
                        {"slot_id":"E01","pid":501,"quantity":12,"pname":"product_for_E01"},{"slot_id":"E02","pid":502,"quantity":12,"pname":"product_for_E02"},
                        {"slot_id":"E03","pid":503,"quantity":12,"pname":"product_for_E03"},
                        {"slot_id":"F01","pid":601,"quantity":12,"pname":"product_for_F01"},{"slot_id":"F02","pid":602,"quantity":12,"pname":"product_for_F02"},
                        {"slot_id":"F03","pid":603,"quantity":12,"pname":"product_for_F03"},
                        {"slot_id":"G01","pid":701,"quantity":12,"pname":"product_for_G01"},{"slot_id":"G02","pid":702,"quantity":12,"pname":"product_for_G02"},
                        {"slot_id":"G03","pid":703,"quantity":12,"pname":"product_for_G03"},
                        {"slot_id":"H01","pid":801,"quantity":12,"pname":"product_for_H01"},{"slot_id":"H02","pid":802,"quantity":12,"pname":"product_for_H02"},
                        {"slot_id":"H03","pid":803,"quantity":12,"pname":"product_for_H03"},
                        {"slot_id":"I01","pid":901,"quantity":12,"pname":"product_for_I01"},{"slot_id":"I02","pid":902,"quantity":12,"pname":"product_for_I02"},
                        {"slot_id":"I03","pid":503,"quantity":12,"pname":"product_for_I03"}]

论坛徽章:
0
5 [报告]
发表于 2012-02-28 15:24 |只看该作者
回复 4# signalsky

  1.     sed -r 's/[^A-Z]+([A-Z][0-9]{2})[^}]+/&,"quantity":12,"pname":"product_for_\1"/g'
复制代码

论坛徽章:
0
6 [报告]
发表于 2012-02-28 15:53 |只看该作者
本帖最后由 yangkyo821 于 2012-02-28 15:54 编辑

python的问题为什么要用sed呢?python里面很简单可以解决啊

  1. for i in your_list_name:
  2.     i["quantity"] = 12
  3.     i["pname"] = "product_for_" + i["slot_id"]
复制代码

论坛徽章:
0
7 [报告]
发表于 2012-02-28 20:32 |只看该作者
回复 5# mpstat
sed -r 's/[^A-Z]+([A-Z][0-9]{2})[^}]+/&,"quantity":12,"pname":"product_for_\1"/g'
非常感谢你的回复,你的答案是正确的。   
不过我不明白为什么要有个[^A-Z]+,我试过不用这个也行
现在想起来好像使用\1是需要前面用()分组的。

   

论坛徽章:
0
8 [报告]
发表于 2012-02-28 20:35 |只看该作者
回复 6# yangkyo821


    谢谢啊,我思维短路了
    我一看到要重复的修改文件就想到用命令修改了。

论坛徽章:
1
辰龙
日期:2014-05-22 11:38:58
9 [报告]
发表于 2012-02-28 22:17 |只看该作者
本帖最后由 winway1988 于 2012-02-28 22:22 编辑
  1. sed 's/"[^"]*":"\([^"]*\)"[^}]*/&,"quantity":12,"pname":"product_for_\1"/g'
复制代码

论坛徽章:
0
10 [报告]
发表于 2012-02-29 01:42 |只看该作者
回复 7# signalsky


    对,不用也可以.
    我前面有(),就是([A-Z][0-9]{2})
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP