shell 檔案操作)

來源:互聯網
上載者:User
http://blog.chinaunix.net/u/29289/showart_407859.html
 read一次可以為多個變數賦值——但一次只能讀一行,比如:

    #!/bin/bash    IFS=:    read aa bb cc < /etc/passwd    echo $aa $bb $cc    (註:預設shell是無法將/etc/passwd中那些以冒號分割的字串分割的,通過設定IFS可以實現這一點,詳情見本文底部)    我們將看到的結果是前兩個變數被賦予了正確的值,最後一個變數被賦予了檔案第一行剩下的所有值。(因為read一次只能讀一行)    而現實中如果一個檔案儲存了這樣一個電話本:    路人甲  13900000000    主角A   23320000    神秘人  12x0x0x0000    旁白    85600000    ……    如果我們要寫一個指令碼來實現該電話本的查詢,通常會這樣寫:    #!/bin/bash    while read name num    do    if [ $name = $1 ]       then echo $num    fi    done    當我們把想查詢的人名作為參數來啟動指令碼,就可以看到他的號碼,然後給他打騷擾電話……    (關於while等流程式控制制語句,我會在稍後整理)      抽取行    head -x 檔案               //抽取前x行    tail -x 檔案               //抽取末尾x行    sed  -n xp 檔案          //抽取檔案中的第x行   註:這裡的-n就是-n,不代表別的。      抽取列    cut -fx -dy 檔案           //以y作為分隔字元,抽取第x列    awk -Fy '{print $x}' 檔案  //以y作為分隔字元,抽取第x列                               註:awk可以抽取多列,在指令中使用逗號分割,例:                               awk -F: '{print $3,$5}' /etc/passwd                                        將會抽取檔案中的第3列和第5列      排序    sort -ty +xn 檔案          //以y作為分隔字元,以第1+x列為基準排序    註:如果使用了該指令,則不能在同一語句內使用其它參數,如有需要,只能在管道中再sort一次,如: sort +4n /etc/fstab | sort -r         其它參數:  n  對數字排序                   d   對字母排序                   M   對月份排序(諸如JAN,FEB....DEC之類)                   r   逆向      $IFS    很多時候我們並不需要指定分隔字元,因為$IFS預設包含了空格,\t和分行符號。    只有遇到其它分隔字元是我們才需要特別指定,比如$PATH和/etc/passwd中就是以冒號分割,遇到類似這種情況,我們才需要對$IFS進行指定。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.