亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: sed或awk,perl都可以,處理匹配問題 [打印本頁]

作者: guobaofu    時間: 2015-03-23 11:05
標題: sed或awk,perl都可以,處理匹配問題
本帖最后由 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

作者: 我是一隻羊    時間: 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
復制代碼

作者: guobaofu    時間: 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

兄弟不對啊。。。
   
作者: 我是一隻羊    時間: 2015-03-23 11:27
回復 3# guobaofu


    給下原文本?我用你一樓給的文本是沒問題的.
作者: zsszss0000    時間: 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
復制代碼

作者: guobaofu    時間: 2015-03-23 11:33
我是一隻羊 發(fā)表于 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

作者: 我是一隻羊    時間: 2015-03-23 11:36
本帖最后由 我是一隻羊 于 2015-03-23 11:39 編輯

回復 6# guobaofu

用你新給的文本也沒問題呢.....你是直接復制的我的awk么....

   



cu002.png (104.7 KB, 下載次數(shù): 70)

cu002.png

作者: guobaofu    時間: 2015-03-23 11:39
zsszss0000 發(fā)表于 2015-03-23 11:31
如果是按照你后來貼的文本的話,試試這個



兄弟不對。。
作者: guobaofu    時間: 2015-03-23 11:42
回復 7# 我是一隻羊


    我在windows下粘貼的,沒有經(jīng)過dos2unix,這下好用了。。謝謝仁兄。。。。

小弟慚愧不如。。
作者: zsszss0000    時間: 2015-03-23 11:43
  1. sed '/sAMAccountName:/{N;/mail/b;s/:\(.*\)\n/:\1\nmail:\1@tlscontact.com/1}' file
復制代碼
試試這個吧,應該可以回復 8# guobaofu


   
作者: guobaofu    時間: 2015-03-23 11:47
謝謝大家的幫忙和支持。。。  
作者: liion631818    時間: 2015-03-23 12:58
  1. px@ubuntu:~$ echo 'sAMAccountName: maged.magdy


  2. sAMAccountName: wassila.fehim
  3. mail: wassila.fehim@tlscontact.com
  4. ' | sed '/sAMAccountName/{n;/mail:/!{i\
  5. xxxxxxxxxxxxxxxxxx
  6. }}'
  7. sAMAccountName: maged.magdy
  8. xxxxxxxxxxxxxxxxxx


  9. sAMAccountName: wassila.fehim
  10. mail: wassila.fehim@tlscontact.com
復制代碼
回復 1# guobaofu


   
作者: jcdiy0601    時間: 2015-03-23 13:47
  1. #!/usr/bin/env python

  2. import re

  3. f = open('test','r')
  4. line_list = f.readlines()
  5. list = []
  6. for line in line_list:
  7.         line = line.strip('\n')
  8.         list.append(line)
  9. p1 = 'sAMAccountName:'
  10. p2 = 'mail:'
  11. for line in list:
  12.         if p1 in line:
  13.                 num = list.index(line)
  14.                 num_m = num + 1
  15.                 if p2 in list[num_m]:
  16.                         pass
  17.                 else:
  18.                         list.insert(num_m,'mail***')
  19. for i in list:
  20.         print i
復制代碼

作者: 聆雨淋夜    時間: 2015-03-30 09:48
sed -r '/sAMAccountName/{N;/^$/s/(.*: (.*))/\1\nmail:\2@tlscontact.com/}' file
作者: sunzhiguolu    時間: 2016-04-26 21:30
perl -00 -F"\n" -aple 'if(@F<4 && /\S*\z/){$_.="\nmail: $&\@tlscontact.com"}' f

作者: moperyblue    時間: 2016-04-26 23:39
本帖最后由 moperyblue 于 2016-04-26 23:40 編輯
  1. sed -r '/sAMAccountName/{h;s/.*: (\S+)/mail: \1@tlscontact.com/;x;n;/mail/!{x;G}}'
復制代碼

作者: 99超人    時間: 2016-04-27 09:09
提示: 作者被禁止或刪除 內容自動屏蔽




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2