sed與AWK

sed

sed本身也是一個管道命令,可以分析standard input 。sed還可以將數據進行取代、刪除、新增、截取特定行等等的功能。

sed的用法:sed [-nefr] 動作

                   選項與參數:

                           -n : 使用安靜(silent)模式。在一般sed的用法中,所有來自STDIN的數據一般都會被列出到屏幕上。但如果                                      加上-n參數後,則只有經過sed特殊處理的那一行(或者動作)纔會被列出來。

                           -e :  直接在指令列模式上進行sed的動作編輯

                           -f :  直接將sed的動作寫在一個文件內,-f filename 則可以執行filename內的sed動作:

                           -r : sed的動作支持的是延伸性正則表達式的語法(預設的是基礎正則吧表達式語法)

                           -i :直接修改讀取的文件內容,而不是由屏幕輸出。

                 動作說明:[n1[,n2]]function

                  n1,n2 :不一定存在,一般代表【選擇進行動作的行數】,如果我的動作需要再10-20行之間進行,則[10,20[動作行爲]]

                 function 有下列這些選項:

                      a: 新增,a的後面可以接字符串,而這些字符串會在新的一行出現(當前的下一行)

                      c:取代, c的後面可以接字符串,而這些字符串可以取代 n1,n2之間的行

                      d:刪除,d後面通常不接任何東西

                       i:插入,i的後面可以接字符串,而這些字符串會在新的一行出現(當前的上一行)

                      p:打印,將某個選擇的數據打印出,通常p會與參數sed -n 一起運行

                      s: 取代 可以直接進行取代的工作  eg:1,20s/old/new/g

示例:

範例1:將/etc/passwd的內容列出並且打印行號,同時,將2-5行刪除

             [practice@rhel6 ~]$ nl /etc/passwd |sed '2,5d'

             將/etc/passwd的內容列出並且打印行號,同時,將2到最後一行顯示出來

             [practice@rhel6 ~]$ nl /etc/passwd |sed -n '2,$p'

             sed的動作爲‘2,5d’,sed後面接的動作,要用 ' ' 兩個單引號括住。

範例2:將第2-5行的內容取代成【no 2-5】

             nl /etc/passwd |sed '2,5c NO 2-5'

範例3:部分數據的搜尋與取代

            sed 's/old word/new word/g'

AWK

awk也是非常棒的數據處理工具,相對於sed常常作用於一整個行的處理,awk則比較傾向於一行當中分成數個字段來處理。因此,awk相當的合適處理小型的數據 數據處理。

在awk的括號內,每一行的每個字段都是有變量名稱的,那就是$1,$2...等變量名稱。awk是以行爲一次處理的單位,而以字段爲最小的處理單位。

AWK用法:awk '條件類型1{動作1}  條件類型2{動作2} ...' filename

awk後面接兩個單引號並加上大括號{}來設定想要對數據進行的處理動作。AWK可以處理後續接的文件,也可以讀取來自前個指令的standard output。AWK主要是處理每一行的字段內的數據,而默認的字段的分隔符爲‘空格鍵’或‘tab’ 鍵。

AWK的內建變量

變量名稱 代表意義
NF 每一行$0擁有的字段總數
NR 目前awk所處理的是第幾行數據
FS 目前的分割字符,默認是空格鍵

示例:

範例1:取出賬號與登入者的IP,且賬號與IP之間以 [tab] 隔開

             last -n 5|awk '{print $1 "\t" $3}'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章