Liunx三劍客2022-11-10

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ù)

-n -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
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容