1. 程式人生 > >Day08_固化命令、grep、sed及awk命令

Day08_固化命令、grep、sed及awk命令

記錄 輸出 print option cnblogs 失敗 ron logs -o

一. 固化命令

  1. shell登陸
    • /etc/profile
    • /etc/bashrc
    • /root/.bashrc
    • /root/.bash_profile
    • /etc/profile.d/a.sh
  2. 非shell登陸
    • /root/.bashrc
    • /etc/bashrc
    • /etc/profile.d/a.sh

二. grep及正則表達式

  1. grep
    • -n :顯示行號
    • -o :只顯示匹配的內容
    • -q :靜默模式,沒有任何輸出,得用$?來判斷執行成功沒有,即有沒有過濾到想要的內容
    • -l :如果匹配成功,則只將文件名打印出來,失敗則不打印,通常-rl一起用,grep -rl ‘root‘ /etc
    • -A :如果匹配成功,則將匹配行及其後n行一起打印出來
    • -B :如果匹配成功,則將匹配行及其前n行一起打印出來
    • -C :如果匹配成功,則將匹配行及其前後n行一起打印出來
    • -c :如果匹配成功,則將匹配到的行數打印出來
    • -E :等於egrep,擴展
    • -i :忽略大小寫
    • -v :取反,不匹配
    • -w:匹配單詞
  2. 正則介紹
    • ^ :行首
    • $ :行尾
    • . :除了換行符以外的任意單個字符
    • .*:所有字符
    • * :前導字符的零個或多個
    • + :前導字符一個或多個
    • ? :前導字符零個或一個
    • x{m} :x出現m次
    • x{m,} :x出現m次至多次(至少m次)
    • x{m,n} :出現m次至n次
    • []:字符組內的任一字符
    • [^]:對字符組內的每個字符取反(不匹配字符組內的每個字符)
    • ^[^]:非字符組內的字符開頭的行
    • \-:只能放在結尾
    • [a-z]:小寫字母
    • [A-Z]:大寫字母
    • [a-Z]:小寫和大寫字母
  3. 正則表達式與通配符
    • 通配符:與命令搭配使用
    • 正則表達式:一般用於文本處理

三. Sed及正則表達式

  1. sed語法
    • sed [options] ‘command‘ in_file[s]
      • options 部分
        • sed -n ‘動作‘ :靜默
        • sed -e ‘動作‘ :多個規則
        • sed -i ‘動作‘:直接修改讀取內容並寫入
        • sed -f ‘動作‘ :將動作寫在一個文件內;
      • command 部分
        • ‘[地址1,地址2] [函數] [參數(標記)]‘
        • 定址的方法 1.數字 2.正則
        • 函數
          • 增刪改
          • a 後插
          • c 替換
          • i 前插
          • d 刪除
          • 輸入輸出
          • p 打印匹配的行 一般和 -n 參數連用,以屏蔽默認輸出
          • r 從文件中讀入
          • w 寫入到文件中
          • s 字符串替換 s/old/new/[g] (g表示一行全部修改)
          • ():保存被匹配的字符 以備反向引用\N時使用 最多9個標簽 標簽順序從左至右

四.awk及正則表達式

  1. awk語法:awk [options] ‘commands‘ files
    • -F 定義字段分隔符,默認的分隔符是連續的空格或制表符,使用option中的-F參數定義間隔符號
    • 用$1,$2,$3等的順序表示files中每行以間隔符號分隔的各列不同域
    • NF變量表示當前記錄的字段數
    • NR 表示AWK讀入的行數
    • 行處理:定址 命令
      • 定址方法: 正則,變量,比較和關系運算
      • ~ !~:匹配正則或不匹配,正則需要用 /正則/ 包圍住
    • -v 定義變量並賦值 也可以借用次方式從shell變量中引入
      • username=root
      • awk -v var=$username -F: ‘$1 == var{print $1,NR,NF}‘ /etc/passwd

五. 其他命令

  1. cat 文件 | sort | uniq:文件排序去重
  2. cut -d分隔符 -fm,n:處理文件以分隔符切割取第m n部分
  3. du -sh:統計文件大小
  4. find 路徑 -type f:按照類型查找普通文件
  5. find 路徑 -name 文件名 :按照名字查找文件
  6. find 路徑 -size +30M:找出大於30M文件
  7. find 路徑 -size +10M -size -30M:找出大於10M小於30M的文件
  8. find / -size +2M -type f -name *.txt

Day08_固化命令、grep、sed及awk命令