shell5-6合集-創(chuàng)新互聯(lián)

sell 5

回顧

正則表達(dá)式
基本正則 ^ $  [abc]  [^]  .  *  \{n,m\}   \{n\}  \{n,\}  \(\)
擴(kuò)展正則+   ?    {n,m}   a|b|c   ()    \b

sed 非交互式編輯文本

前置命令  |  sed 選項(xiàng)  (定址符)指令 
sed 選項(xiàng)  (定址符)指令   被處理的文檔
選項(xiàng) :  -n  -r  -i
指令: p   d   s

==============================
a行下添加 i行上添加 c替換整行

創(chuàng)新互聯(lián)公司長(zhǎng)期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為順河企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,順河網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

找到使用bash的用戶,按照 用戶名 --> 密碼的方式顯示

#!/bin/bash
n=`sed -n '/bash$/s/:.*//p' /etc/passwd`
for i in $n  將找到的使用bash的用戶名交給for循環(huán)
do
        p=`grep $i: /etc/shadow`  將名字與shadow對(duì)比
        p1=${p#*:}   找到對(duì)應(yīng)的行,掐頭
        p2=${p1%%:*}   去尾,得到純粹的密碼
        echo "$i --> $p2"  輸出最后結(jié)果
done

awk 精確搜索文檔

用法:
awk 選項(xiàng)  (條件)指令  被處理的文檔
前置指令 | awk 選項(xiàng)  (條件)指令

awk '{print}' test   輸出所有
awk '{print $2}' test   輸出每行第2列
awk '/hello/{print $2}' test   找到有hello的行,輸出他的第2列
awk的內(nèi)置變量  $1  $2  $3.....   $0 所有列    NR行號(hào)   NF列號(hào)

awk默認(rèn)分隔符為空格,可以使用-F修改分隔符
awk -F: '{print $1}' user   定義分隔符為冒號(hào), 輸出第一列
awk -F[:/] '{print $10}' user    定義分隔符為冒號(hào)或者斜線, 輸出第10列

awk -F: '{print $1"的解釋器是"$7}' user   輸出特定列,常量+變量
ifconfig eth0 | awk '/RX p/{print "本機(jī)eth0的接收流量是"$5"字節(jié)"}'    獲取網(wǎng)卡接收流量
ifconfig eth0 | awk '/TX p/{print "本機(jī)eth0的發(fā)送流量是"$5"字節(jié)"}'        獲取網(wǎng)卡發(fā)送流量

df -h | awk '/vda1/{print "當(dāng)前主機(jī)跟分區(qū)剩余空間是"$4}'             獲取根分區(qū)剩余空間
awk '/Failed/{print "***者的ip是"$11}' /var/log/secure

awk的工作時(shí)機(jī)

BEGIN任務(wù)   執(zhí)行1次
逐行任務(wù)      執(zhí)行N次
END任務(wù)       執(zhí)行1次

BEGIN{ }{ }END{ }

awk 'BEGIN{指令} {指令} END{指令}'  文件

awk 'BEGIN{print "ABCD"}{print}END{print NR}' user 

tab鍵   \t  制表符

awk -F: 'BEGIN{print "User\tUid\tHome"}{print $1"\t"$3"\t"$6 }END{print "總計(jì) "NR" 行"}' user

========================================

awk處理?xiàng)l件

1, 使用正則作為條件

awk -F: '/^root/{print $1}' user  找以root開頭的行,輸出第1列
awk -F: '/^root|^bin/{print $1}' user  找以root或者bin開頭的行,輸出第1列
awk -F: '/^(root|bin)/{print $1}' user  同上

awk -F: '$1~/root/{print $1}' user  找第一列包含root的行,并且輸出第1列
awk -F: '$1!~/root/{print $1}' user 第一列不包含root

2, 數(shù)字與字符串做條件 == != > >= < <=

awk -F: 'NR==1{print}' user   輸出第1行
awk -F: 'NR>2{print}' user    輸出行號(hào)大于2的行
awk -F: 'NR>=2{print}' user    輸出行號(hào)大于等于2的行
awk -F: '$1=="root"{print}' /etc/passwd 輸出第1列是root的行
awk -F: '$1~/root/{print}' /etc/passwd 輸出第1列包含root的行
awk -F: '$1~/oot/{print}' /etc/passwd 輸出第1列包含oot的行
awk -F: '$3>1000{print}' /etc/passwd 輸出第三列大于1000的行

3, 使用邏輯符號(hào) && 并且 || 或者

awk 'NR>=2 && NR<=4{print}' user 輸出2~4行
awk 'NR<=1 || NR>4{print}' user  輸出第1行,或者大于4的行
awk -F: '$3>=1000 && $3<=1005' /etc/passwd  當(dāng)任務(wù)只是print時(shí)可以省略{print}    

輸出所有普通用戶的家目錄與解釋器
    例如:   張三的家目錄是XXX ,解釋器是 XXX
awk -F: '$3>=1000 && $3<=1100{print $1"的家目錄是"$6",解釋器是"$7 }' /etc/passwd

4,運(yùn)算

awk 'BEGIN{x++;print x}'    把x+1   然后輸出x的值
awk 'BEGIN{x=8;print x+=2}'  定義變量x=8, 然后+2再輸出結(jié)果
awk 'BEGIN{x=8;x--;print x}' x定義好,然后減1,輸出
awk 'BEGIN{print 2+3}'   
awk 'BEGIN{print 2*3}'
awk 'BEGIN{print 2*3}'

shell 6

回顧

awk 精確搜索文檔
-F 定義分隔符   print
$1  $2  $3 .... $0   NR  NF   ""
正則表達(dá)式   /  /     ~    !~
字符串與數(shù)字  ==  !=  >  >=  <  <=
邏輯符號(hào)   &&   ||
運(yùn)算  x++

=============================

在awk中使用if判斷

單分支:
awk '{if(/bash$/){x++}}END{print x}' user  如果找到以bash結(jié)尾的行,就把x+1,最后輸出x的值

awk -F: '{if($3>=1000){x++}}END{print x}' /etc/passwd   如果第3列(UID)大于等于1000,則把x+1,,最后輸出x的值

雙分支:
awk -F: '{if($3>=1000){x++}else{y++}}END{print x,y}'  /etc/passwd  如果第3列(UID)大于等于1000,則把x+1,否則把y+1,最后輸出x與y的值

awk數(shù)組,數(shù)組可以理解為能保存多個(gè)值的特殊變量

數(shù)組名[下標(biāo)]=元素值
awk 'BEGIN{a[1]=100;a[2]=200;print a[2],a[1]}'

awk 'BEGIN{a["x"]=100;a["y"]=200;print a["y"],a["x"]}'

awk 'BEGIN{a["x"]="abc";a["y"]="xyz";print a["y"],a["x"]}'

在awk中使用數(shù)組+for循環(huán)實(shí)現(xiàn)遍歷數(shù)組

awk 'BEGIN{a[1]=100;a[2]=200;a[3]=300;for(i in a){print i,a[i]}}'

awk '{a[$1]++}END{for(i in a){print a[i],i}}' abc

a[abc]=3
a[xyz]=2
a[zxc]=1

a[192.168.0.1]=3
a[172.10.10.10]=2
a[100.100.100.100]=1

使用awk統(tǒng)計(jì)網(wǎng)站訪問量:

/var/log/httpd/access_log是httpd服務(wù)的訪問日志

awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' /var/log/httpd/access_log   最終顯示訪問的次數(shù)與對(duì)應(yīng)的ip地址

ab -c 1 -n 10000 http://172.25.0.11/  訪問10000次

awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' /var/log/httpd/access_log | sort -nr  統(tǒng)計(jì)完之后再排序,訪問量大的在第一行

#!/bin/bash
n=`uptime |sed -n 's/.*://p'`
echo 主機(jī)平均負(fù)載是$n
ifconfig eth0 | awk '/RX p/{print "主機(jī)的eth0 網(wǎng)卡接收流量是"$5"字節(jié)"}'
ifconfig eth0 | awk '/TX p/{print "主機(jī)的eth0 網(wǎng)卡發(fā)送流量是"$5"字節(jié)"}'
free -h |awk '/^Mem/{print "主機(jī)剩余內(nèi)存容量是"$4}'
df -h | awk '/\/$/{print "根分區(qū)剩余容量是"$4}'
awk 'END{print "當(dāng)前主機(jī)用戶總數(shù)是"NR}' /etc/passwd
w=`who | wc -l`
echo 當(dāng)前登錄的賬戶數(shù)量是$w個(gè)
p=`ps aux | wc -l`
echo 當(dāng)前主機(jī)開啟的進(jìn)程數(shù)量是$p個(gè)
r=`rpm -qa | wc -l`
echo 當(dāng)前主機(jī)安裝的軟件包數(shù)量是$r個(gè)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文標(biāo)題:shell5-6合集-創(chuàng)新互聯(lián)
文章鏈接:http://muchs.cn/article0/cedcio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站導(dǎo)航自適應(yīng)網(wǎng)站、搜索引擎優(yōu)化、做網(wǎng)站微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司