正則表達式(3.23)

正則表達式

  1. grep/egrep 工具的使用
  • -c:表示打印符合要求的行數
  • -i:忽略大小寫
  • -n:輸出符合要求的行及其行號
  • -v:打印不符合要求的行
  • -A:後+一個數字(有無空格都可以),如-A2表示打印符合要求的行以及下面兩行
  • -B:後+一個數字,如-B2表示打印符合要求的行以及上面兩行
  • -C:後+一個數字,如-C2表示打印符合要求的行以及上下各兩行
  • 過濾出帶有某個關鍵詞的行,並輸出行號:# grep -n 'root' /etc/passwd
  • 過濾出不帶有某個關鍵詞的行,並輸出行號:# grep -nv 'nologin' /etc/passwd
  • 過濾出所有不包含數學的行:# grep -v '[0-9]' /etc/inittab
  • 過濾出所有包含數學的行:# grep '[0-9]' /etc/inittab
  • 過濾掉所有以#開頭的行:#grep -v '^#' /etc/sos.conf//含空行
  • 過濾掉所有空行和以#開頭的行:#grep -v '^#' /etc/sos.conf |grep -v '^$'
  • 過濾出任意一個字符和重複字符:grep 'r.o' /etc/passwd//r.o,表示r與o之間有一個任意字符的行過濾出來
  • #grep 'ooo*' /etc/passwd:表示0個或多個*前面的字符
  • 指定要過濾出的字符出現次數:#grep 'o\{2\}' /etc/passwd
  • 過濾出一個或多個指定的字符:# egrep 'o+' test.txt
  • 過濾出0個或一個指定的字符:# egrep 'o?' text.txt;# egrep 'ooo?' text.txt
  • 過濾出字符串1或者字符串2:egrep 'aaa|111|ooo' text.txt
  • egrep中()的應用:egrep 'r(oo|at)o' text.txt
  1. sed工具的使用
  • 打印某行,格式爲sed -n 'n'p filename//單引號內的n是一個數字,表示第幾行。-n選項的作用是知顯示我們要打印的行
  • 把所有行都打印出來:sed -n '1,$'p filename
  • 打印包含某個字符串的行:sed -n '/root/'p test.txt
  • 刪除某些行:#sed '1'd test.txt
  • 替換字符或者字符串:#sed '1,2s/ot/to/g' test.txt//s表示替換;g表示本行全局替換,若不加則指替換本行出現的第一個;/分隔符(還有#和@)
  • 刪除文檔中所有的數字和字母
    #sed 's/[0-9a-zA-Z]//g' test.txt
  • 調換兩個字符串的位置:sed 's/\(rot\)\(.*\)\(bash\)/\3\2\1/' test.txt//“()”在sed裏屬特殊符號,必須在前面加轉義符“\”,替換是則寫成\1 、\2、 \3的形式
  • 直接修改文件的內容:sed -i 's/ot/to/g' test.txt
  1. awk工具的使用
  • 截取文檔中的某個段:head -n2 test.txt |awk -F ':' '{print $1}'//-F是指定分隔符," $1"爲第一個字段,但“$0”表示整行。
  • 匹配字符或者字符串:#awk '/oo/' text.txt
  • 條件操作符:#awk -F ':' '$3=="o"' /etc/passwd//"!="表示不等於;“&&”表示並且;“||”表示或者
  • awk的內置變量,常用變量有OFS、NF、NR、-F,NF表示用分隔符分隔後一共多少段,NR表示行號
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章