歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux shell編程之awk與sed使用詳解

 Linux shell編程之awk的用法

    1. awk的使用

    基本功能:在文件或字符串中基於指定規則浏覽和抽取信息。awk抽取信息後,才能進行其他文本操作。完整的awk腳本通常用來格式化文本文件信息。

    調用方式:1. 命令行方式

    2. 將所有awk命令插入一個文件,並使awk程序可執行,然後使awk命令解釋器作為腳本的首行,以便通過鍵入腳本名稱來調用它。

    3. 將所有的awk命令插入一個單獨文件,然後調用。

    選項說明:-F 域符號 缺省為空格

    -f 指明awk腳本

    2. 模式和動作

    1. 任何awk語句都由模式和動作組成。在一個awk腳本中可能有許多語句。

    模式部分決定動作語句何時觸發及觸發事件。模式缺省為執行狀態。

    處理即對數據進行的操作。

    2. 模式可以是任何條件語句或復合語句或正則表達式。

    3. 模式包括兩個特殊字段BEGIN和END。

    域和記錄

    域標識:{GetProperty(Content)},$2,…,$n。用逗號做域分隔。{GetProperty(Content)}表示所有域。

    打印域或所有域:print命令

    注:當碰到awk錯誤時,可相應查找:

    1. 確保整個awk命令用單引號括起來

    2. 確保命令內所有引號成對出項

    3. 確保用花括號括起動作語句,用圓括號括起條件語句

    4. 不要忘記使用花括號

    條件操作符

    ~ 匹配正則表達式

    !~  不匹配正則表達式

    內置變量:

    NF:每一條記錄中域名數

    是將變量$PWD的返回值傳入awk並顯示其目錄。

    可以利用NF獲取文件名

    注:但這裡指定域分隔符為/

    NR:記錄個數

    Linux shell編程之sed用法

    1. 是一個非交互性文本流編輯器。它編輯文件或標准輸入導出的文本拷貝。

    2. 通過行號或正則表達式指定要改變的文本行

    3. sed不與初始文件打交道,而只與它的一個拷貝打交道,如果操作結果沒有重定向到一個文件,那麼將輸出到屏幕。

    調用方式:

    a. 命令行方式

    b. 將sed命令插入腳本文件中,然後調用sed

    c. 將sed命令插入腳本文件中,使得腳本文件為可執行。

    保存sed輸出

    重定向到一個新文件 >

    sed中定位文本的方式

    x          一行號

    x,y       行號范圍

    /pattern/ 查詢包含模式的行

    /pattern/pattern/     查詢包含兩個模式的行

    /pattern/,x              在指定行號上查詢匹配模式的行

    x,/pattern/              通過行號和模式查詢匹配行

    x,y!                  查詢不包含行號x,y的行

    sed編輯命令

    p     打印文本

    匹配元字符$前,必須使用反斜線\

    =  打印行號      使用-e選項

    如果既打印行號又打印匹配行,必須使用兩個sed命令,並使用-e選項

    附加文本

    使用符號a\ ,可以指定文本一行或多行附加到指定行。若不指定文本放置位置位置,sed缺省放置在每一行後面。

    創建sed腳本文件

    創建腳本文件,第一行為:

    #!/bin/sed -f       ----注 說明sed命令解釋行。腳本在這一行查找sed以運行命令,這裡定位在/bin

    插入文本:在指定行前面插入,它也只接受一個地址。

    刪除文本:d

    替換命令用替換模式替換指定模式

    使用sed實現的一個重要功能是在另一個系統中下載的文件中剔除控制字符。

    1. 使用s/-*//g刪除橫線-----

    2. 使用/^$s/d刪除空行

    3. 使用$d刪除最後一行

    4. 使用1d刪除第一行

    5. 使用awk{print {GetProperty(Content)}}打印第一列

Copyright © Linux教程網 All Rights Reserved