1. 程式人生 > >shell指令碼:awk和sed

shell指令碼:awk和sed

awk 和sed
    cut [選項] 檔名   預設分隔符是製表符
    選項:
        -f 列號:    提取第幾列
        -d 分隔符:    按照指定分隔符分割
    cut的侷限性  不能分割空格
    
    awk
        一個強大的文字分析工具
        把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分在進行各種處理
        語法:awk '條件1{動作1}.....' 檔名
        eg:
            df -h | awk '{print $1 $2}'
            cat /etc/passwd | awk 'BEGIN{FS=":"}{print $1"\t"$2"\t"$3}'  --> BEGIN命令,一開始就執行
            ifconfig eth1 | grep "inet addr:" 獲取檔案中 含有inet addr:這一行
            ifconfig eth1 | grep "inet addr:" | awk -F: '{print $2}' |awk '{print $1}' 獲取ip地址
    
    sed
        是一個非互動性檔案流編輯器,它編輯檔案或標準輸入匯出的檔案拷貝
        注:並不與初始檔案打交道,它操作的只是一個拷貝,然後所有的改動如果沒有重定向到一個檔案,將輸出到螢幕
        語法:sed [選項] '[動作]' 檔名
        選項:
            -n 使用安靜(slient)模式,顯示經過sed特殊處理的資料
            -e 允許多點編輯
            -i 直接修改讀取的檔案內容,而不是由螢幕輸出 --> 改原始檔
        命令:
            a\    新增,a的後面可以接字串,在下一行出現
                sed ’2a hive' cut.log
            c\    替換
            d    刪除
            i\    插入
            p    列印
            s    查詢並替換 eg:2s/old/new /g
            
定時器
    crontab命令允許使用者提交、編輯、或刪除相應的作業。每一個使用者都可以有一個crontab檔案來儲存排程資訊。可以使用它執行任意一個shell指令碼或某個命令
    crontab的命令格式
        crontab -e 
            使用編輯器編輯當前的crontab檔案
        crontab檔案格式
            minute     hour     day-of-month     month-of-year     day-of-week     commands
            [0-59]     [0-23]    [1-31]            [1-12]            [0-6] 0表示周天    執行的命令    
            
        書寫注意事項
        全部不能為空,必須填入,不知道的用萬用字元*表示任何時間
        每個時間段可以指定多個值,不連續得值用(,)間隔,連續的用(-)間隔
        命令應該給出絕對路徑
        使用者必須具有執行所對應的命令或程式的許可權
        */2 每隔兩分鐘(..)執行
        
history命令
    功能:幫助使用者回憶執行過的命令
        -c 清楚所有的歷史命令
        -w 把快取中的歷史命令寫入歷史命令儲存檔案~/.bash_history
        !命令號  執行這條命令的歷史命令
        !字串 執行以該字串開頭的最近的一條歷史命令
ctrl+R
    對歷史命令的搜尋
    
輸入重定向
    < 
輸出重定向
    > >> 
    
    bash t2.sh > a.log 2> b.log   正確的日誌輸入到a,錯誤的輸入到b
    bash t2.sh > /dev/null 2> b.log   正確的日誌不輸入