grep
對(duì)文本內(nèi)容進(jìn)行篩選
grep [option] [pattren] file
-i啄栓、v也祠、o、q诈嘿、E參數(shù)的選擇
-c # 統(tǒng)計(jì)行數(shù)
-v與o的意義相反
找出所有的空行
每行的結(jié)尾都有一個(gè)$符號(hào)
grep '^$' -n
過濾
grep '^#' -v xxx |grep '^$'
-[],以及[^]反義匹配
擴(kuò)展使用
使用前需要 grep -E 'xxx' xxx
-+
-奖亚?
-|
-() # 分組過濾括號(hào)內(nèi)的內(nèi)容
grep -E 'g(oo|ld)d' text.txt
-" .. "
grep -E "(l..e).*\1" text.txt
-" {n.m} "
sed
對(duì)文本或者數(shù)據(jù)流進(jìn)行加工處理
sed [選項(xiàng)] [命令字符] [輸入文件]
-n # 取消默認(rèn)輸出
-i # 將處理結(jié)果寫入源文件
-e # 多次編輯
-r # 支持?jǐn)U展正則表達(dá)
命令字符
-a,d,i,p,s///g等
用于在抓取文件之中進(jìn)行處理
例子
-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
對(duì)文本進(jìn)行格式化處理,默認(rèn)用空格作為分隔符爆袍,多個(gè)空格也認(rèn)為是一個(gè)分隔符
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 # 為每一行加上行號(hào)
awk '{print $1,$(NF-)}' xxx.txt # 取出第一列作郭,倒數(shù)第二列
進(jìn)階用法
-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 #自定義輸出分隔符號(hào)
修改切隔的分隔符號(hào)
awk -F ":" '{print $1}' pwd.txt
awk -v FS=":" '{print $1}' pwd.txt #修改文件以“:”用作分隔符
-RS
-ORS
內(nèi)置變量和自定義變量
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 #分別輸出倆個(gè)文件內(nèi)容
awk -v RS=" " '{print NR,$0}' pwd.txt # 修改輸出的分隔符號(hào)
awk -v ORS="xxx" '{print NR,$0}' pwd.txt # 修改結(jié)尾的輸出符號(hào)
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之中可以通過$符號(hào)可以進(jìn)行全局變量和局部變量的調(diào)用
printf和print的區(qū)別
printf之后沒有換行夹攒,必須指定一個(gè)格式
awk '{printf $0}' pwd.txt
awk '{printf "%s\n",$0}' pwd.txt # %s 用于代替輸入的全部文件
-%d # 代表一個(gè)參數(shù),必須與之后的數(shù)字一一對(duì)應(yīng)
統(tǒng)計(jì)訪問用戶信息
awk '{print $1}' access.log |sort -n |uniq -c|sort -nr |head -10