linux學習筆記之shell程式設計(一)正則表示式與字元處理
阿新 • • 發佈:2018-12-16
shell程式設計
基礎正則表示式
正則和萬用字元的區別:正則是包含匹配,匹配檔案內容,grep,awk等支援正則表示式。萬用字元是完全匹配,匹配檔名,例如find,ls不認識正則表示式
####正則表示式常用的字元(注意區別於萬用字元裡面的符號)####
- -*,前一個字元重複任意多次
- . ,匹配任意一個字元
- ^ 匹配行首
- $ 匹配行尾
- [] 匹配括號中的任意一個
- [^]對中括號中的字元取反
- \ 轉移符
正則表示式例項
grep "a*" text.txt
匹配檔案中的全部內容grep "aa*" text.txt
grep "s..d" text.txt
匹配s和d中間有兩個字母的行grep ".*" text.txt
匹配所有內容grep ""a[opd]d text.txt
匹配aod apd addgrep "^[0-9] text.txt"
匹配行首是數字的行grep "a\{3\}" text.txt
匹陪剛好出現3次a的行
字元提取命令
cut [op] 檔名 ####、
- -f 列號,
- -d 分隔符
cut 的預設分隔符是製表符tab,需要使用-d指定分隔符,入股是連續的空格作為分隔符,cut命令就會失效
printf ‘輸出格式’,輸出內容
格式化輸出命令,%ns 字串,%ni整數, %m.nf小數,共計m位,小數是n位
/n換行 /r回車 /t製表符
無法使用重定向的方式來輸出檔案內容
awk ‘條件1 {動作1},條件2 {動作2}…’ 檔名
常用條件:大於小於比較,
常用動作:格式化輸出,流程控制
命令例項:
awk '{printf $2 "/t" $6 "/n"}' text.txt
輸出表格的2,6列,可以自動識別多個空格分隔符awk 'BEGIN {print "%s" this is test} {printf $2 "\n"}' text.txt
awk 'BEGIN{FS=":"} {printf $2 "\n"} text.txt'
指定分隔符是:同理,還有END條件
sed 輕量級的流文字編輯器
支援管道,可以直接編輯命令輸出結果
sed [op] '[動作]' 檔名
- -n 把經過處理的資料輸出到螢幕
- -e 允許對輸入資料應用多條sed命令編輯
- a\ 追加,在當前行後新增一行多行
- c\替換行
- p 輸出行
- d 刪除行
程式碼例項
sed '2p' student.txt
輸出第二行資料
sed '2a nihao' student.txt
在第二行後追加資料
sed '2i niyeshi\ duia' student.txt
在第二行前面加入兩行資料,\代表資料沒有輸入完成