1.查找進(jìn)程并殺掉該進(jìn)程
ps -ef|grep XXX|grep -v grep|awk '{print $1}'|xargs kill -9
2.awk
awk行處理器朋鞍,在處理大文件時(shí)不會(huì)出現(xiàn)內(nèi)存溢出或者處理緩慢的問(wèn)題锨用。
語(yǔ)法:awk [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...],玖媚,-F指定分隔符钝计,-f調(diào)用腳本茉帅,-v定義變量
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
BEGIN 初始化代碼塊糙申,在對(duì)每一行進(jìn)行處理之前宾添,初始化代碼,主要是引用全局變量柜裸,設(shè)置FS分隔符
END 結(jié)尾代碼塊缕陕,在對(duì)每一行進(jìn)行處理之后再執(zhí)行的代碼塊,主要是進(jìn)行最終計(jì)算或輸出結(jié)尾摘要信息
使用:
1.awk -F:指定分隔符
awk -F":" '{print $1}' /etc/passwd
awk -F":" '{print NF}' /etc/passwd //每行多少個(gè)字段
awk -F":" '{print $NF}' /etc/passwd //每行第NF個(gè)字段的值
打印出來(lái)
awk -F":" '{print NR}' /etc/passwd 每行的記錄號(hào)疙挺,多文件記錄遞增
awk -F":" '{print FNR}' /etc/passwd FNR 與NR類(lèi)似扛邑,不過(guò)多文件記錄不遞增,每個(gè)文件都從1開(kāi)始
awk -F: 'NR==5{print}' /etc/passwd //顯示第5行
1.1 匹配代碼塊
//純字符匹配 !//純字符不匹配 ~//字段值匹配 !~//字段值不匹配 ~/a1|a2/字段值匹配a1或a2
awk '!/mysql/{print $0}' /etc/passwd //輸出不匹配mysql的行
awk -F: '$1!~/mail/{print $1}' /etc/passwd //不匹配
1.2 if 語(yǔ)句 必須用在{}中铐然,且比較內(nèi)容用()擴(kuò)起來(lái)
awk -F: '{if($1~/mail/) print $1}' /etc/passwd //
awk -F: '{if($1~/mail/) {print $1}}' /etc/passwd
awk -F: '{if($1~/mail/) {print $1} else {print $2}}' /etc/passwd
1.3 輸出分隔符
awk '$6 ~ /WAIT/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt //輸出字段6匹配WAIT的行蔬崩,其中輸出每行行號(hào),字段4搀暑,5,6沥阳,并使用制表符分割字段
IF語(yǔ)句
awk -F: 'BEGIN{A=0;B=0} {if($3>100) {A++; print "large"} else {B++; print "small"}} END{print A,"\t",B}' /etc/passwd
while語(yǔ)句
awk -F: 'BEGIN{i=1} {while(i<NF) print NF,$i,i++}' /etc/passwd
應(yīng)用:
統(tǒng)計(jì)netstat -anp 狀態(tài)為L(zhǎng)ISTEN和CONNECT的連接數(shù)量分別是多少
netstat -anp|awk '$6~/LISTEN|CONNECTED/{sum[$6]++} END{for (i in sum) printf "%-10s %-6s %-3s \n", i," ",sum[i]}'
awk -F ',' '{if(length($1)>1||length($4)>1) print $1 "," $4}’ write0-1000.csv |uniq|awk -F ',' '{if(length($1)>1) {temp=$1} print temp "," $2}’>write0-1000.csv.0
3.sed
3.1 替換
sed 's/aa/aas/' file //替換
sed 's/aa/aas/g' file //全文替換
sed -n 's/test/TEST/p' file // -n選項(xiàng)和p命令一起使用表示只打印那些發(fā)生替換的行
sed -i 's/book/books/g' file //直接編輯文件選項(xiàng)-i,會(huì)匹配file文件中每一行的第一個(gè)book替換為books
sed 's/test/tests/2g' file 當(dāng)需要從第N處匹配開(kāi)始替換時(shí)自点,可以使用 /Ng
3.2 刪除
sed '/^$/d' file //刪除空白行
sed '2d' file //刪除第二行
sed '2,$d' file //刪除文件的第2行到末尾所有行:
3.3 已匹配字符串標(biāo)記&
正則表達(dá)式 \w+ 匹配每一個(gè)單詞桐罕,使用 [&] 替換它,& 對(duì)應(yīng)于之前所匹配到的單詞:
echo this is a test line | sed 's/\w\+/[&]/g'
[this] [is] [a] [test] [line]
sed 's/^192.168.0.1/&localhost/' file
192.168.0.1localhost
3.4 子串匹配標(biāo)記\1
echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/'
this is 7 in a number
echo aaa BBB | sed 's/\([a-z]\+\) \([A-Z]\+\)/\2 \1/'
BBB aaa
3.5 選定行的范圍:,(逗號(hào))
sed -n '5,/^test/p' file //打印從第5行開(kāi)始到第一個(gè)包含以test開(kāi)始的行之間的所有行
3.6 -e選項(xiàng)允許在同一行里執(zhí)行多條命令
sed -e '1,5d' -e 's/test/check/' file
3.6 從文件讀入:r命令
sed '/test/r file' filename //file里的內(nèi)容被讀進(jìn)來(lái),顯示在與test匹配的行后面功炮,如果匹配多行溅潜,則file的內(nèi)容將顯示在所有匹配行的下面
sed -n '/test/w file' example //在example中所有包含test的行都被寫(xiě)入file里
sed '/^test/a\this is a test line' file //將 this is a test line 追加到 以test 開(kāi)頭的行后面
sed '/^test/i\this is a test line' file //將 this is a test line 追加到以test開(kāi)頭的行前面