麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 服務器 > 管理維護 > 正文

awk文本處理總結(高級篇)

2024-09-10 14:18:57
字體:
來源:轉載
供稿:網友

awk高級篇
 
 不管學習任何語言,我們學到的都是工具,工具知道的越多,我們做起工作來就越方便,但是工具在你的手里并不一定能造出好的產品,編輯腳本和編程序也是一樣的重要的是算法,別人不知道怎么處理的問題你要知道如何處理。這才能證明你比別人更高,工具只要你慢慢練習都會使用。
 
    下面給大家一個我認為是比較高級的問題了,感興趣的可以自己再想想更好的解決辦法。問題是這樣的我們有一個從ldap里導出的文件,它都是一行一個字段來說明的,每個用戶的數據是已空行分割的。我們必須把對應的uid 和userPassword找出來而且是對應的。
   
    例子:example4.txt
   
dn: uid=cailiying,domain=ccc.com.cn,o=mail.ccc.com.cn
uid: cailiying
userPassword:: e21kNX0zREl4VEIwODBJdXZkTnU3WFFtS3lRPT0=
letters: 300
quota: 100

dn: uid=caixiaoning,domain=ccc.com.cn,o=mail.ccc.com.cn
userPassword:: e21kNX1kejFXU0doZWprR2RNYnV5ajJJRWl3PT0=
letters: 300
quota: 100
uid: chenzheng
domain: cqc.com.cn

dn: uid=caixiaoning,domain=ccc.com.cn,o=mail.ccc.com.cn
userPassword:: e21kNX1kejFXU0doZWprR2RNYnV5ajJJRWl3PT0=
letters: 300
quota: 100

dn: uid=caixiaoning,domain=ccc.com.cn,o=mail.ccc.com.cn
userPassword:: e21kNX1kejFXU0doZWprR2RNYnV5ajJJRWl3PT0=
letters: 300
quota: 100
uid: chenzheng
domain: cqc.com.cn
                                                                                    處理這個文本我們需要考慮的問題是:
1 uid  和userPassword 并不是每一個段落里都有
2 在每一段里面uid和userPassword 先后順序是隨機的
3 有的段落里可能只有uid 或者只有userPassword

從文本上分析可以看出必須使用的間隔符號,一個是空行,一個是冒號。
冒號我們awk -F:就可以了,不過空行我們不好判斷現在想到length()這個函數,在unix里空行最多只有一個字符,如果一行字符數小于2我們判斷為空行,好現在間隔符號問題解決,空行只能通過循環來實現對空行的判斷。                                        

現在碰到的另外一個問題是我們的某個段里的信息是不完全的,我們就要放棄這段這兒如何來做,就是要做兩個標記變量u 和 p  再做一個循環如果u  和  p 同事滿足我們才輸出結果下面的awk腳本就是通過這個思考來解決ldif文本的處理的!

# 此腳本的目的是方便我們以后導ldap的其他郵件的數據,
# 我們之前使用slapdcat -l 導出所有信息,然后我們需要
# 整理出uid  password , 這里的設置都是默認以":" 間隔的
# 例slapcat -l user.ldif  如果想得到一份uid 和userPassword 對應的文件,
# 修改username = "dn"; password = "userpassword"; awk -f ldap2txt.awk user.ldif | grep uid | more  可以查看結果 (有可能是多域的郵件)
# 如果想得到domain 所對應的密碼,修改username = "dn"; password = "userpassword";  運行 awk -f ldap2txt.awk user.ldif |grep domain | more


#!/bin/awk -f
# File name: ldap2txt.awk

BEGIN {
        FS = ":";
        username = "uid";
        password = "userPassword";
}

{

        if(length($0) == 0 )
        {
                if (name != "u"  &&  pword != "p")
                {
                        printf ("%s:%s", name,pword);
                        name = "u";
                        pword = "p";
                }
        }

        else 
        {
                if ($1 == username)
                {
                name = "u";
                name = $0;
                }
                else if($1 == password)
                {
                pword = "p";
                pword = $0;
                }
        }
}
END {

}

實際上對于學習語言首先是熟悉一些常用的函數,然后就是試著去解決別人解決過的問題,然后自己再思考一下是不是有更好,速度更快的解決辦法,實際上大部分的程序員都是在重復的使用著別人好的解決辦法,把別人的方法轉變為自己的方法,就是反復練習解決不同的問題,思考更好的方法!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产免费一区二区三区视频 | 精品久久久久久中文字幕 | 久久久经典视频 | 99re热视频这里只精品 | 4399一级成人毛片 | 国产午夜网 | 国产区二区 | 泰剧19禁啪啪无遮挡 | 一级做a爱片性色毛片 | 久久久久久久久久久av | 久久国产免费 | 免费男女视频 | 在线观看免费视频麻豆 | 亚洲3p激情在线观看 | 亚洲视频高清 | 无遮挡一级毛片视频 | 国产精品99久久久久久久女警 | 黄www片| 国产午夜三级一区二区三桃花影视 | 泰剧19禁啪啪无遮挡大尺度 | 欧美 日韩 中文 | 毛片118极品美女写真 | 毛片在线免费播放 | 精品国产一区二区三区在线观看 | 日本黄色免费播放 | 亚洲最大的成人网 | 欧美成人免费一级 | av国产免费 | 国产va在线观看 | 深夜影院一级毛片 | 91久久夜色精品国产网站 | 91中文字幕在线观看 | 国产成人精品区 | 国产亚洲精品一区二区三区 | 国产在线精品区 | 中文字幕在线观看亚洲 | 久久久久久艹 | 久草视频在线资源 | 成人做爰s片免费看网站 | 色婷婷久久久久久 | 久久αv|