1. 程式人生 > >Linux:find grep sed查詢命令

Linux:find grep sed查詢命令

find:

  命令主要為對檔案的查詢以及部分操作,下面介紹一下常用引數的使用

  find [路徑地址] -name '[檔名(支援檔案萬用字元和正則表示式)]'

    當前目錄下查詢以test開頭的檔案;

       # find . -name 'test*'
       ./test1
       ./test

    查詢以大寫開頭數字加字尾結尾的檔案可使用正則表示式;

       # find . -name '[A-Z]*[1-9].txt'
       ./Atest2.txt

  find -perm  按照 檔案許可權查詢檔案,建議使用8進製表示法 
       # find . -perm 644 | xargs ls -l
       -rw-r--r--. 1 root root    0 Apr 20 00:14 ./Atest2.txt
       -rw-r--r--. 1 root root 1485 Apr 19 19:27 ./test
       -rw-r--r--. 1 root root    0 Apr 19 23:44 ./test2/test
       -rw-r--r--. 1 root root 1485 Apr 19 23:43 ./test2/test2

     ps:xargs 將上一命令的結果作為下一命令的引數並返回結果 

  find -exec  可以對所搜尋的檔案操作  比如大量刪除同名檔案

       # find . -name '[A-Z]*' -print -exec rm -f {} \;
       ./Atest2.txt

                  ps:‘{}’ 指前面find所搜尋到的檔案‘\’轉義分號。

  find -path -prune  常用來搜尋時忽略某個已知目錄

       # find . -name 'test' -path "test4" -prune -o -print
       .
       ./test2
       ./test
     

-path "test" -prune -o -print 是 -path "test" -a -prune -o -print 的簡寫表示式按順序求值, -a 和 -o 都是短路求值,與 shell 的 && 和 || 類似如果 

-path "test" 為真,則求值 -prune , -prune 返回真,與邏輯表示式為真;否則不求值 -prune,與邏輯表示式為假。如果 -path "test" -a -prune 為假,則求值 -print ,-print返回真,或邏輯表示式為真;否則不求值 -print,或邏輯表示式為真。

grep:

全稱是Global Regular Expression Print,表示全域性正則表示式版本,它的使用許可權是所有使用者;grep命令是一種強大的文字搜尋工具,它能使用正則表示式搜尋文字,並把匹 配的行打印出來,用於過濾/搜尋的特定字元。可使用正則表示式能多種命令配合使用。

   命令格式:

                  grep[引數] '查詢內容' [檔名]

   引數:

    -r   查詢當前目錄及子目錄

    -n   顯示行數

    -c   匹配次數

    -i   不區分大小寫

    -v   不顯示包含查詢內容的行

    -A n  顯示匹配行上n行(共n+1行)

    -B n  顯示匹配行下n行(共n+1行)

    -C n  顯示匹配行上及下n行(共2n+1行)

        # cat test | grep -n -C 3 '^root' --color
        1:root:x:0:0:root:/root:/bin/bash
        2-bin:x:1:1:bin:/bin:/sbin/nologin
        3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
        4-adm:x:3:4:adm:/var/adm:/sbin/nologin

sed:

sed是一個很好的檔案處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將資料行進行替換、刪除、新增、選取等特定工作。

   set [nefri] 操作n1,n2[] 檔案

   引數 -n    預設輸出全部資料 加上-n引數後僅輸出被處理行      

      -e   直接在指令行模式進行編輯

      -f   將命令寫入檔案  -f [檔名]即可執行檔案內指令

      -r   sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)

      -i   直接修改檔案內容不輸出

   操作 a   新增,a後可跟字串,這些字元會在當前行下一行出現 

      c   取代,c後字串可以替換n1行到n2行之間所有內容

      d   刪除,刪除n1-n2行內容

      i   插入,c後字串可插入到當前行上一行

       p    列印,將某個資料列印,常與引數-n同用

      s   取代,可直接進行取代工作

   刪除某行

# sed '2,5d' test  #刪除2-5
# sed '2,$d' test  #刪除2-最後一行
# sed '/root/d' test  #查詢包含root字元的資料行並刪除

   顯示某行
#sed -n '1,2p' test   #顯示1-2行
#sed -n '1p' test      #顯示第一行</span></span>

   查詢字元
# sed -n '/mysql/p' test    #查詢包含mysql的資料行
  
   插入
# sed -n '2a qwe' test    #第二行下插入
# sed -n '2i qwe' test    #第二行上插入

   取代
# sed -n '/root/{s/root/boom/;p}' test   #把root字元換成boom並輸出