grep
對文本內(nèi)容進行篩選
grep [option] [pattren] file
-i、v、o、q、E參數(shù)的選擇
-c # 統(tǒng)計行數(shù)
-v與o的意義相反
找出所有的空行
每行的結尾都有一個$符號
grep '^$' -n
過濾
grep '^#' -v xxx |grep '^$'
-[],以及[^]反義匹配
擴展使用
使用前需要 grep -E 'xxx' xxx
-+
-?
-|
-() # 分組過濾括號內(nèi)的內(nèi)容
grep -E 'g(oo|ld)d' text.txt
-" .. "
grep -E "(l..e).*\1" text.txt
-" {n.m} "
sed
對文本或者數(shù)據(jù)流進行加工處理
sed [選項] [命令字符] [輸入文件]
-n # 取消默認輸出
-i # 將處理結果寫入源文件
-e # 多次編輯
-r # 支持擴展正則表達
命令字符
-a,d,i,p,s///g等
用于在抓取文件之中進行處理
例子
-sed -n "2,3p" xxx # 查找特殊行
-sed "/xxx/d" xxx -n # 刪除
-sed "s/xxx/xxx/g" xxx -i
-sed -e "s/xxx/xx/g" -e "s/xx/xx/g" xxx
-sed "xxa osksk" xxx -i
空模式的匹配
-sed "a --------" xxx
列子
去頭去尾操作
sed "2p" -n |sed "s/^.*inet//"|sed "s/net.*$//"
sed -e "2s/^.*inet//" -n -e "2s/net.*$//p" -n
awk
對文本進行格式化處理,默認用空格作為分隔符,多個空格也認為是一個分隔符
awk options pattern {action} file
awk '{print $0}' file # 輸出全行的數(shù)據(jù)
-0
-FS # 以其他的字符作為分隔
-NF # 字段的總數(shù)量
-NR # 輸出文本的行數(shù)
awk '{print $1,$2,$3}' xxx.txt
awk '{print "第一列:"$1}' xxx.txt
awk '{print"每一行的內(nèi)容"$0}' xxx.txt
awk 'NR==5,NR==6{print $0}' xxx.txt # 定位第五行并輸出
awk '{print NR,$0}' xxx.txt # 為每一行加上行號
awk '{print $1,$(NF-)}' xxx.txt # 取出第一列,倒數(shù)第二列
進階用法
-FS
-OFS
awk 'NR==2,NR==6{print $1}' xxx.txt
ifconfig eth0|awk 'NR==2{print $1}'
awk -F ":" '{print $0}' pwd.txt
awk -F ":" '{print $1,$(NF-1)}' pwd.txt
awk -v FS=":" '{print $1,$(NF-1)}' pwd.txt # 輸入自定義分隔符
awk -F ":" '{print $1,"-------"$NF}' pwd.txt
awk -F ":" -v OFS="------" '{print $1,$NF}' pwd.txt #自定義輸出分隔符號
修改切隔的分隔符號
awk -F ":" '{print $1}' pwd.txt
awk -v FS=":" '{print $1}' pwd.txt #修改文件以“:”用作分隔符
-RS
-ORS
內(nèi)置變量和自定義變量

參數(shù)參考表
awk -v FS=":" '{print NR,NF,$1}' pwd.txt
awk -v FS=":" '{print NR,$1,$(NF-1)}' pwd.txt
awk '{print FNR,$0}' casns.txt sadj.txt #分別輸出倆個文件內(nèi)容
awk -v RS=" " '{print NR,$0}' pwd.txt # 修改輸出的分隔符號
awk -v ORS="xxx" '{print NR,$0}' pwd.txt # 修改結尾的輸出符號
awk -v ORS="xxx" '{print FILENAME,$0}' pwd.txt #輸出文件名
ARGV數(shù)組變量
由命令行傳入系統(tǒng)內(nèi)置的數(shù)組
awk 'BEGIN{print "sadsa"} {print ARGV[1],$0}' pwd.txt
awk -v myname="yj" 'BEGIN{print "yjyj",myname}' #自定義變量操作
在awk之中可以通過$符號可以進行全局變量和局部變量的調用
printf和print的區(qū)別
printf之后沒有換行,必須指定一個格式
awk '{printf $0}' pwd.txt
awk '{printf "%s\n",$0}' pwd.txt # %s 用于代替輸入的全部文件
-%d # 代表一個參數(shù),必須與之后的數(shù)字一一對應
統(tǒng)計訪問用戶信息
awk '{print $1}' access.log |sort -n |uniq -c|sort -nr |head -10