【linux】find和三劍客grep、sed、awk

2020-08-10 13:24:31

find

用於快速查詢目錄和檔案。
格式:

  • find <search_dir> [option] [option] ...
  • find <start_dir> -maxdepth <n> -mtime <+-day> -type <type> -name <"name">

常用操作:

# 找到並刪除
# 1)加參數 -delete
# 2)使用-exec
find ./ -type d -exec rm -rf {} \;
find ./ -type d -exec |xargs rm -rf
# 3)提前執行find方法
rm -rf `find xxxx`
rm -rf $(find xxx)

# 找到並複製
find ./ -type d |xargs -i cp {}  /tem/backup	# -i xargs轉化後插入到{}
find ./ -type d |xargs cp -t /tem/backup

# 找到並移動
find ./ -type d |xargs -i mv {}  /tem/backup	# -i xargs轉化後插入到{}
find ./ -type d |xargs mv-t /tem/backup			# -t 指定移動目錄
find ./ -type d -exec mv -rf {} \;

參數:

  • -maxdepth 最大遞回深度
  • -mindepth 最小遞回深度
  • -type 指定查詢型別,f file, d director
  • -name指定名稱
  • -size
    • b Byte(default)
    • K 1024Byte
    • M
    • G
  • -perm 許可權查詢 例:-perm 644
  • -delete 找到並刪除
  • -exec 執行簡單命令
    • find ./ -type f -name "*.txt" -exec rm -rf {} \;
      • {} 把查詢到的內容放在其中
      • \ ; 跳脫「;」號
    • find ./ -type f -name "*.txt" -exec cp {} /tmp \;
      • 找出並刪除/複製
  • -mtime
    * +7 7天以前
    * -7 最近七天
    * 7 正好前面七天

-mtime 參數參考圖:
在这里插入图片描述

grep

grep是常用的搜尋命令,可以說除了cd,ls等命令外最常用的就是它了,強大的搜尋功能,同時搜尋出來的內容還可以高亮顯示。
使用格式:

  • grep <關鍵字> <檔案> 在檔案中搜尋「關鍵字」
  • | grep <關鍵字> 在管道流讀取的資訊中搜尋「關鍵字」

應用場景:

  • 日誌關鍵資訊檢索
  • 組態檔檢索,排除
  • 輸出資訊檢索
  • 關鍵資訊排除

使用範例:

#所給樣例a.txt內容
100
1000
123456
abcdef
ABCDEF

# 直接查詢檔案資訊
grep 100 a.txt
# 輸出
100
1000

# 管道流檢視資訊
cat a.txt | grep 100
100
1000

# 使用正則匹配
grep -E "^100$" a.txt  	# 當確定用正則是均加上-E參數,否則有些正則萬用字元無法匹配

# 排除匹配關鍵字的行
grep -v "100" a.txt
123456
abcdef
ABCDEF

# 統計關鍵字匹配次數
grep -c "100" a.txt

參數:

  • -B before,同時顯示查詢資訊的前面N行,例: grep -B 1
  • -A after, 同時顯示後N行, 例:grep -A 1
    *-C center, 以查詢到內容爲中心,顯示前後N行
  • -c count,統計出現次數,例:grep -c
  • -v 排除匹配關鍵字整行
  • -o obverse檢視匹配(匹配過程)
  • -n 顯示行號
  • -E 在關鍵字中使用正則匹配,使用egrep命令自動支援擴充套件正則

sed

強大的修改命令。常處理文字檔案(小)、組態檔、日誌檔案。
格式:sed [參數[ [處理操作] [檔案]
sed執行原理:
在这里插入图片描述
sed使用:

  • 使用sed進行替換:sed 's#被替換文字#替換文字#g' 此時sed在行中替換出現的關鍵字列印到螢幕,但是不修改檔案,修改時需要加上-i參數
    • s :替換
    • g :global替換所有
  • 使用sed進行查詢: sed '/關鍵字/p' 檢索關鍵字並輸出(p列印輸出)

詳細使用下圖:
在这里插入图片描述

  • 使sed進行刪除:sed [操作] [檔案], 可以刪除指定的行或者刪除含有關鍵字的行

在这里插入图片描述
小技巧和範例:

  • 取出eth0網絡卡ip地址
    ip a s eth0|sed -n '3p'|sed -r 's#^.*inet (.*)/24.*#\1#g'
    ip a s eth0|sed -rn '3s#^.*inet (.*)/24.*#\1#gp'

  • 修改時進行備份
    sed -i.bak 's#aaa#AAA#g' ./aa.txt
    注意:n和i參數不要同時使用

  • 將當前目錄下以test開頭的.txt檔案改爲.jpg檔案

    • ls test*.txt|sed -r 's#(.*)txt$#mv & \1jpg#g'|bash
    • rename命令的使用:rename [需要就修改資訊] [修改成什麼資訊] [檔名稱匹配]

常用參數:

  • -i 插入「替換」串
  • -r 匹配正則
  • -n 排除不匹配的內容
  • -e 寫多個命令表達式,實現sad處理多要求, 例:sed -e '/abc/ibefore' -e '/abc/aafter'

操作控制參數:

  • p(print)輸出資訊
  • i(insert)插入資訊,在指定資訊前面插入資訊
  • a(append)追加資訊,在指定資訊之後追加資訊
  • d (delete) 刪除行
  • ‘/^$/’ 匹配空行
  • & 把管道(|)中的數據放到此處
  • s (substitute) 替換資訊
  • g (global)全域性操作

awk

具有統計分析檔案、對檔案中的列操作的功能。常用與文字操作、日誌資訊統計等。
使用格式:awk [參數[ [處理操作] [檔案]

常用處理數據方式:
在这里插入图片描述
操作模式:
在操作處理中使用
在这里插入图片描述