文字處理三劍客命令初探
阿新 • • 發佈:2021-06-15
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