前言:
正則表達式是描述字符排列和匹配模式的一種語法規則。主要用於字符串的模式分割、匹配、查找及替換。(主要爲了模糊匹配)
1、正則表達式與通配符區別
2、基礎正則表達式
3、字符截取命令
3.1 cut命令
cut命令用於列提取,默認分隔符是tab鍵。
選項:-d指定分隔符,-f指定提取第幾列
例:cut -t ":" -f1 /etc/passwd 已:爲分隔符提取文件的第一列
grep "/bin/bash" /etc/passwd | grep -v root | cut -f1 -d ":" 列出系統中普通用戶的用戶名
3.2 awk命令
①語法格式:awk '條件1{動作1}條件2{動作2}...' 文件
條件,一般使用關係表達式作爲條件,如a>10。動作,格式化輸出或流程控制語句
awk一次讀入一整行,默認以tab鍵或者空格爲分隔符將一行分爲多個字段,表示爲$1、$2、$3...其中$0表示文件名
例:awk '{printf $2 "\n"}' /etc/passwd 打印文件的第二列,其中的轉義字符要加雙引號
df -h | grep "/dev/sda5" | awk '{print $5}' | cut -d "%" -f1 顯示某分區磁盤使用量百分比
awk '$3>60{printk $4}' filename 關係運算符成立才執行括號中命令
②BEGIN、END作爲關係表達式,表示命令執行開始時和結束時
例:awk 'BEGIN{FS=":"}{print $1 "\t" $3}' /etc/passwd 開始執行時FS指定分隔符
awk 'END{print "goodbye"}{print $2}' filename 結束時打印一句話
③補充:格式化輸出printf、print
格式:printf '輸出類型輸出格式' 輸出內容
輸出類型:%ns,輸出n個字符串。%ni,輸出n個整數。%m.nf,輸出浮點數,n爲小數位數,m-n爲整數位數
輸出格式:\n換行、\r回車、\a輸出警告聲、\t水平製表符、\v垂直製表符、\b退格符、\f清屏符
print與printf不同之處在於,print自帶換行符,比較方便
3.3 sed命令
sed命令主要用來將數據進行選取、替換、刪除、新增的命令
sed [選項] '動作' 文件名
選項:-n:只會將sed處理的行輸出,否則默認全篇輸出
-e:允許進行多個動作
-i:sed修改默認是臨時修改,-i選項表示直接修改文件
動作:a:追加,在當前行後添加
c:行替換
i:在當前行前插入
d:刪除指定行
p:打印輸出指定行
s:字符串替換,格式:行範圍s/舊字符串/新字符串/g
例:sed - n '2p' filename 打印輸出第二行
sed -i '2,4d' filename 刪除2至4行
sed -i '2a helloworld' filename 第二行追加內容
sed -i '3c helloworld' filename 替換第3行
sed -i '3i helloworld' filename 在第3行前插入
sed -i '2s/goodbye/goodnight/g' filename 第2行的goodbye替換爲goodnight
sed -ie 's/Sunday/Monday/g;s/Tuesday/Saturday/g' filename 同時多個動作
3.4 sort、wc命令
①sort命令用來排序
sort [選項] 文件名
選項:
-f:忽略大小寫
-n:以數值型進行排序,默認是字符串排序
-r:反向排序
-t:指定分隔符,默認分隔符是tab鍵
-k n[,m]:指定排序的字段範圍,n字段開始,m字段結束(可選),默認是到結尾
例:sort /etc/passwd 按首字母排序
sort -t ":" -k "3,3" /etc/passwd 指定冒號爲分隔符,以第3字段爲排序依據
sort -n -t ":" -k "3,3" /etc/passwd 指定以數字型排序,若以字符串形式排序是先判斷第一個字符的順序,第一個字符相 同再判斷第2個字符,以此類推
若以數值排序優先級:1>2>3>12>23>137>258
若以字符排序優先級:1>12>137>2>23>258>3
②wc命令 統計命令
wc [選項] 文件名
-l:只統計行數
-w:只統計單詞數
-m:只統計字符數,包括換行符