免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3971 | 回复: 16

[文本处理] sed或awk,perl都可以,处理匹配问题 [复制链接]

论坛徽章:
1
发表于 2015-03-23 11:05 |显示全部楼层
本帖最后由 guobaofu 于 2015-03-23 11:38 编辑

我的要求是,匹配到关键字’sAMAccountName:‘ ,如果下一行包含mail:字段就跳过,否则就在匹配的关键子追加一行mail:**  
注意这是ldap格式的,每一段路都会有一个空行。。


例子
sAMAccountName: maged.magdy


sAMAccountName: wassila.fehim
mail: wassila.fehim@tlscontact.com


结果:

sAMAccountName: maged.magdy
mail: maged.magdy@tlscontact.com

sAMAccountName: wassila.fehim
mail: wassila.fehim@tlscontact.com




源文件


dn: CN=Shannon Smith,OU=Extended,OU=Users,OU=Port Elizabeth,OU=South Africa,OU=AFRICA,OU=UKVI,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: shannon.smith

dn: CN=seanpolicytest,OU=Normal,OU=Users,OU=JKT,OU=INDONESIA,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: seanpolicytest

dn: CN=Novita S.,OU=Normal,OU=Users,OU=JKT,OU=INDONESIA,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: novita.saputri

dn: CN=Lili A.,OU=Normal,OU=Users,OU=JKT,OU=INDONESIA,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: lili.andany

dn: CN=ryan page,OU=Normal,OU=Users,OU=PRY,OU=ZA,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: ryan.page

dn: CN=Judy Z.,OU=Extended,OU=Users,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: judy.zhao
mail: judy.zhao@tlscontact.com

dn: CN=Flo Mojsiu,OU=Extended,OU=Users,OU=Tirana,OU=Albania,OU=EUROMED,OU=UKVI,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: flo.mojsiu

dn: CN=Abdelfattah B.,OU=Normal,OU=Users,OU=OUD,OU=MA,OU=EUROPE,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: abdelfattah.boubcher

dn: CN=Michael W.,OU=Extended,OU=Users,OU=SHA,OU=CHINA,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: michael.wang
mail: michael.wang@tlscontact.com

dn: CN=Brave,OU=Extended,OU=Users,OU=SHA,OU=CHINA,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: brave.wan
mail: brave.wan@tlscontact.com

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
发表于 2015-03-23 11:12 |显示全部楼层
本帖最后由 我是一隻羊 于 2015-03-23 11:31 编辑
  1. awk '/mail/{next}/sAMA/{$0=$0"\nmail: "$2"@tlscontact.com"}1' inputfile
复制代码
  1. sed -r '/sAMA/{N;/com$/!{s/ ([^\n]+)\n/&mail: \1@tlscontact.com\n/}}' inputfile
复制代码

论坛徽章:
1
发表于 2015-03-23 11:16 |显示全部楼层
回复 2# 我是一隻羊


dn: CN=a.william.lim,OU=IT_servers_admin,OU=DEV,OU=Users,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: a.william.lim
@tlscontact.com.lim

dn: CN=GAO Zheng,OU=DisableUsers,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: gao.zheng
@tlscontact.com

dn: CN=Hichem T.,OU=Normal,OU=Users,OU=ALG,OU=DZ,OU=EUROPE,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: hichem.tafat
@tlscontact.comfat

兄弟不对啊。。。
   

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
发表于 2015-03-23 11:27 |显示全部楼层
回复 3# guobaofu


    给下原文本?我用你一楼给的文本是没问题的.

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
发表于 2015-03-23 11:31 |显示全部楼层
本帖最后由 zsszss0000 于 2015-03-23 11:33 编辑
  1. sed '/sAMAccountName:/{N;/mail/b;s/\n/\nmail: wassila.fehim@tlscontact.com/1}' file
复制代码
如果是按照你后来贴的文本的话,试试这个
  1. sed '/sAMAccountName:/{N;/mail/b;s/\n/\nmail: wassila.fehim/1}' file
复制代码

论坛徽章:
1
发表于 2015-03-23 11:33 |显示全部楼层
我是一隻羊 发表于 2015-03-23 11:27
回复 3# guobaofu





dn: CN=Shannon Smith,OU=Extended,OU=Users,OU=Port Elizabeth,OU=South Africa,OU=AFRICA,OU=UKVI,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: shannon.smith

dn: CN=seanpolicytest,OU=Normal,OU=Users,OU=JKT,OU=INDONESIA,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: seanpolicytest

dn: CN=Novita S.,OU=Normal,OU=Users,OU=JKT,OU=INDONESIA,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: novita.saputri

dn: CN=Lili A.,OU=Normal,OU=Users,OU=JKT,OU=INDONESIA,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: lili.andany

dn: CN=ryan page,OU=Normal,OU=Users,OU=PRY,OU=ZA,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: ryan.page

dn: CN=Judy Z.,OU=Extended,OU=Users,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: judy.zhao
mail: judy.zhao@tlscontact.com

dn: CN=Flo Mojsiu,OU=Extended,OU=Users,OU=Tirana,OU=Albania,OU=EUROMED,OU=UKVI,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: flo.mojsiu

dn: CN=Abdelfattah B.,OU=Normal,OU=Users,OU=OUD,OU=MA,OU=EUROPE,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: abdelfattah.boubcher

dn: CN=Michael W.,OU=Extended,OU=Users,OU=SHA,OU=CHINA,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: michael.wang
mail: michael.wang@tlscontact.com

dn: CN=Brave,OU=Extended,OU=Users,OU=SHA,OU=CHINA,OU=WW,DC=tls,DC=ad
changetype: add
sAMAccountName: brave.wan
mail: brave.wan@tlscontact.com

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
发表于 2015-03-23 11:36 |显示全部楼层
本帖最后由 我是一隻羊 于 2015-03-23 11:39 编辑

回复 6# guobaofu

用你新给的文本也没问题呢.....你是直接复制的我的awk么....

    cu002.png


cu002.png
cu002.png

论坛徽章:
1
发表于 2015-03-23 11:39 |显示全部楼层
zsszss0000 发表于 2015-03-23 11:31
如果是按照你后来贴的文本的话,试试这个



兄弟不对。。

论坛徽章:
1
发表于 2015-03-23 11:42 |显示全部楼层
回复 7# 我是一隻羊


    我在windows下粘贴的,没有经过dos2unix,这下好用了。。谢谢仁兄。。。。

小弟惭愧不如。。

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
发表于 2015-03-23 11:43 |显示全部楼层
  1. sed '/sAMAccountName:/{N;/mail/b;s/:\(.*\)\n/:\1\nmail:\1@tlscontact.com/1}' file
复制代码
试试这个吧,应该可以回复 8# guobaofu


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP