1. 程式人生 > 其它 >文字處理三劍客命令初探

文字處理三劍客命令初探

sed

語法

sed 選項 "定位+命令" 檔案路徑

流式編輯器,主要擅長對檔案的編輯操作,我們可以事先定製好編輯檔案的命令,然後讓sed 自動完成對檔案的整體編輯

選項

-n     取消預設輸出

-r     支援擴充套件正則元字元

-i     立即編輯檔案

定位

行定位

1  定位到第一行

1,3代表從第一行到第三行

不寫定位代表定位所有行

正則表示式定位

/egon/     包含egon的行

/^egon/     以egon開頭的行

/egon$/     以egon結尾的行

數字加正則表示式定位

1,8p   代表列印1到8行

1,/egon/p     則代表取從第一行到首次匹配到/egon/的行

命令

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


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

d     刪除,因為是刪除啊,所以d後面通常不接任何咚咚

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

p     列印,亦即將某個選擇的資料印出。通常phi與引數sed -n 一起執行~

s     取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如1,20s/old/new/g 就是啦

awk

awk主要用於處理有格式的文字,例如/etc/passwd這種

用法

awk      選項 'pattern{action}' 檔案路徑

選項

-F   指定分隔符

工作流程

awk -F '{print $1,$3}' /etc/passwd

1、awk會讀取檔案的一行內容然後賦值給$0

2、然後awk會以-F指定的分隔符將該行切分成 n 段,最多可以達到 100段,第一段給$1,第二段給$2,依次類推

3、print輸出該段的第一段和第三段,逗號代表輸出分隔符,預設與-F保持一致

4、重複步驟1,2,3直到檔案內容讀完

內建變數

$0      一整行內容

NR     記錄號,等同於等號

NF     以-F分隔符分割的段數

pattern可以是

正則

/正則/      # 該行內容匹配成功正則

$1 ~ /正則/     # 第一段內容匹配成功正則

$1 !~ /正則/     #第一段內容沒有匹配成功正則

比較運算

NR >= 3 && NR <=5    #3到5行

$1 == 'root'     #第一段內容等於root

action可以是

print $1,$3

grep

grep 擅長過濾內容

grep也支援管道,我們可以發現三劍客命令都支援管道

用法

grep 選項 '正則' 檔案路徑

選項

-n      在過濾出的每一行前面加上它在檔案中的相對行號

-i     忽略大小寫

-color     顏色

-l     如果匹配成功,則只將檔名打印出來,失敗則不列印
       通常-rl 一起用,grep -rl 'root' /etc

-R.-r     遞迴

示例

[root@localhost ~]# grep '^root' /etc/passwd
root:x:0:0:root:/root:/bin/bash

[root@localhost ~]# grep -n 'bash$' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
44:egon:x:1000:1000:egon:/home/egon:/bin/bash

[root@localhost ~]# grep -rl 'root' /etc