linux學習筆記之shell程式設計(一)
阿新 • • 發佈:2018-12-13
shell程式設計
基礎正則表示式
正則和萬用字元的區別:正則是包含匹配,匹配檔案內容,grep,awk等支援正則表示式。萬用字元是完全匹配,匹配檔名,例如find,ls不認識正則表示式
####正則表示式常用的字元(注意區別於萬用字元裡面的符號)####
- -*,前一個字元重複任意多次
- . ,匹配任意一個字元
- ^ 匹配行首
- $ 匹配行尾
- [] 匹配括號中的任意一個
- [^]對中括號中的字元取反
- \ 轉移符
正則表示式例項
grep "a*" text.txt
匹配檔案中的全部內容grep "aa*" text.txt
匹配至少一個a的行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條件