Linux的體系結構
查找特定文件
find -name [filename] 當前目錄遞歸查找某個文件
find -iname [filename] 當前目錄遞歸查找某個文件(忽略大小寫)
find / -name [filename] 全局遞歸查找某個文件(/定位到系統根目錄)
find ~ -name [filename] 當前用戶目錄查找某個文件(~定位用當前用戶目錄,通配符支持模糊查詢)
man find(查找find指令的說明)
檢索文件內容
grep [查找內容] [查找文件](支持模糊查詢)
傳統的 grep 程序, 在沒有參數的情況下, 只輸出符合 RE 字符串之句子. 常見參數如下:
-v: 逆反模示, 只輸出"不含" RE 字符串之句子.
-r: 遞歸模式, 可同時處理所有層級子目錄里的文件.
-q: 靜默模式, 不輸出任何結果(stderr 除外. 常用以獲取 return value, 符合為 true, 否則為 false .)
-i: 忽略大小寫.
-w: 整詞比對, 類似 <word> .
-n: 同時輸出行號.
-c: 只輸出符合比對的行數.
-l: 只輸出符合比對的文件名稱.
-o: 只輸出符合 RE 的字符串. (gnu 新版獨有, 不見得所有版本都支持.)
-E: 切換為 egrep .
管道操作符|
可將指令連接起來,前一個指令的輸出作為后一個指令的輸入
使用管道注意的要點
1、只處理前一個命令正確輸出,不處理錯誤輸出
2、右邊命令必須能夠接收標準輸入流,否則傳遞過程中數據會被拋棄
對文件內容做統計
awk
語法:awk [options] 'cmd' file
1、一次讀取一行文本,按輸入分隔符進行切片,切成多個組成部分
2、將切片直接保存在內建的變量中,2..($0表示行的全部)
3、支持對單個切片的判斷,支持循環判斷,默認分隔符為空格
//按空格切片,打印第一個切片和第四個切片
awk '{print $1,$4}' filename
//如果第一切片等于tcp并且第二切片等于1就打印整行
awk '$1=="tcp" && $2==1{print $0}' filename
//如果第一切片等于tcp并且第二切片等于1 或者 是第一行 就打印整行
awk '($1=="tcp" && $2==1) || NR == 1 {print $0}' filename
//按逗號分隔,打印第二切片
awk -F ',' '{print $2}' filename
/*
*自定義數組engiarr,key為第一切片,value為相同切片出現的次數,掃描結束后循環數組engiarr
*打印出key和value
*/
awk '{engiarr[$1]++}END{for(i in engiarr)print i "\t" engiarr[i]}'
批量替換文本內容
sed
語法:sed [option] 'sed command' filename
適合用于對文本的行內容進行處理
/*
*-i替換并保存到文本,不加-i是不會保存到文本的,s是對字符串的操作
*第一個斜杠到第二個斜杠之間就是要查找的內容
*第二個斜杠到第三個斜杠之間就是要替換的內容,^就是以什么開頭的內容
*/
sed -i 's/^Str/String/' filename
//$就是以什么結尾的內容
sed -i 's/\.$/;/' filename
//g就是全文替換,不加就只會替換每行的首個符合的內容
sed -i 's/\.$/;/g' filename
//d就是刪除符合內容的行
sed -i 's/\.$/d' filename