linux四劍客awk 、sed、grep 、find

2020-08-13 19:15:39

find(查詢檔案或者目錄)

find path -name 「targetName」

find path -name 「targetName」 -type f(檔案)

find path -name 「targetName」 -type d(目錄)

find path -name 「targetName」 -type f - perm 644(許可權, 檔案預設666 目錄777 ,但Linux會預設減去022)

find path -name 「targetName」 -type f -size +5k(大於5K, +5M大於5M)

find path -name 「targetName」 -type f(檔案) -mtime(修改時間) +30(30天以前,只能以天爲單位

find path -name 「targetName」 -type f(檔案) -mtime(修改時間) -30(30天以內,只能以天爲單位

find path -name 「targetName」 -type f -mtime -30 | xargs rm -rf {} ; (xargs是承接的意思, 用exec替換xargs,功能更廣)
比如:xargs 不能進行復制, exec可以

find . -type f -exec chmod -R 644 {} ; //將當前目錄下的所有檔案的許可權都改成644
find . -type d -exec chmod -R 755 {} ; //將當前目錄下的所有檔案的許可權都改成755

grep 查詢檔案中的內容

grep -n(顯示行號) --color(顯示色彩) 「要查詢的內容」 path
grep -n(顯示行號) --color(顯示色彩) 「要查詢的內容((表示以什麼結尾 )」 path

grep 「查詢的目標」 path

grep -v 「不想看到的目標」 path(-v 就是 取反,不找什麼什麼)
grep -v "^$"以空開頭, 以空結尾 (可以去掉空行, 空行以空開頭,以空結尾)

grep - aciv

  • a 以文字的方式搜尋
  • c 計算符合的行數
  • i 忽略大小寫
  • v 反向選擇,即不顯示包含的
  • n 顯示行號
  • l 只顯示匹配的檔名, 不顯示匹配的內容
  • E 加上擴充套件 grep -e ==egrep
    例如 egrep + 正則 來匹配IP地址
    egrep --color 「([0-9]){1,3}.){3} [0-9]{1,3}$」 // .前必須➕\ 跳脫字元

awk 對列處理能力好, 對行處理能力差

檔案/日誌分析神器(列和列之間以空格分開的)

awk ‘{print $1}’ test.txt // 列印test.txt檔案中的第一列
'{print $1}'是一個整體(用‘’ 括起來)
{ }是固定格式
$1 表示第一列 $3 第三列 $NF最後一列 $(NF-1)倒數第二列…

awk -F 指定列分割符 ‘{}’ 具體檔案
」「 雙引號在awk中表示新增的意思 ,雙引號內是什麼,就新增什麼

eg :awk -F: ‘{print $1 「:」 $NF}’ test.txt|head 5 //列印test.txt檔案以:爲列分割 的前5行 的第一列和最後一列,用 :連線

-F就是指定切分格式 (預設爲空格)

hostname ifconfig | grep "inet addr:"|grep -v "127" |awk '{print $2}'|awk -F. '{print $1"-"$2"-"$3"-"$4"-lny"}' //修改了hostname

`` //反引號 可以讓內部的命令列語句變成shell指令

sed

類似於awk, sed 簡單,對列處理能力差,對行處理能力好
/可以替換成#號

sed -i’s/jd.com/baidu.com/’
sed -i ‘s#jd.com#baidu.com#’
sed ‘s#jd.com#baidu.com#1’//替換1行
sed ‘s#jd.com#baidu.com#2’//替換2行
sed ‘s#jd.com#baidu.com#g’//全部替換

s表示替換哪行

  • i 表示修改後儲存, 不加-i修改無效

sed 命令中有變數, 必須用雙引號

刪除:d命令
$ sed ‘2d’ example-----刪除example檔案的第二行。
$ sed ‘2,$d’ example-----刪除example檔案的第二行到末尾所有行。
$ sed ‘$d’ example-----刪除example檔案的最後一行。
$ sed '/test/'d example-----刪除example檔案所有包含test的行。

從檔案讀入:r命令
$ sed ‘/test/r file’ example-----file裡的內容被讀進來,顯示在與test匹配的行後面,如果匹配多行,則file的內容將顯示在所有匹配行的下面 下麪。

寫入檔案:w命令
$ sed -n ‘/test/w file’ example-----在example中所有包含test的行都被寫入file裡。

追加命令:a命令
$ sed ‘/^test/a\—>this is a example’ example<-----'this is a example’被追加到以test開頭的行後面,sed要求命令a後面有一個反斜槓。

插入:i命令
$ sed ‘/test/i\
new line
-------------------------’ example
如果test被匹配,則把反斜槓後面的文字插入到匹配行的前面。

下一個:n命令
$ sed ‘/test/{ n; s/aa/bb/; }’ example-----如果test被匹配,則移動到匹配行的下一行,替換這一行的aa,變爲bb,並列印該行,然後繼續。

變形:y命令
$ sed ‘1,10y/abcde/ABCDE/’ example-----把1–10行內所有abcde轉變爲大寫,注意,正則表達式元字元不能使用這個命令。

退出:q命令
$ sed ‘10q’ example-----列印完第10行後,退出sed。
保持和獲取:h命令和G命令

top命令詳解
https://www.cnblogs.com/makelu/p/11169270.html

free(看記憶體)
https://www.cnblogs.com/ultranms/p/9254160.html

df(看檔案系統磁碟使用情況)

mpstat 看CPU資訊 (top)

netstat 看網路相關的狀態https://www.cnblogs.com/ftl1012/p/netstat.html