linux awk命令怎么用? awk:用于一行中分成數(shù)個(gè)“欄位”來(lái)處理。適合處理 小型資料。
創(chuàng)新互聯(lián)-云計(jì)算及IDC服務(wù)提供商,涵蓋公有云、IDC機(jī)房租用、成都棕樹(shù)電信機(jī)房、等保安全、私有云建設(shè)等企業(yè)級(jí)互聯(lián)網(wǎng)基礎(chǔ)服務(wù),咨詢(xún)電話(huà):028-86922220
執(zhí)行模式:awk '條件型別1{動(dòng)作1} 條件型別2{動(dòng)作2} ...' filename
# last | awk '{print $1 "\t" $3}' == 檢視登入者的資料,只顯示登入名和ip地址,并以[tab]隔開(kāi)
awk 的內(nèi)建變數(shù)
變數(shù)名稱(chēng) 代表的含義
NF 每一行($0)擁有的欄位總數(shù)
NR 當(dāng)前 awk 所處理的是 “第幾行” 資料
FS 當(dāng)前分隔符,預(yù)設(shè)空格鍵
awk 的邏輯運(yùn)算子
運(yùn)算單元 代表含義
大于
小于
= 大于或等于
= 小于或等于
== 等于
!= 不等于
范例:
cat /etc/passwd | awk '{FS=":"} $3 10 {print $1 "\t" $3}' == 檔案/etc/passwd是以":"分隔的,檢視第三欄小于10的資料,并且只顯示帳號(hào)與第三欄
以上是我對(duì)awk的總結(jié),希望對(duì)你有幫助,是我寫(xiě)的哦,不是復(fù)制的。
linux 怎么用awk命令 取出一段文字
awk '/DIMENSION NAME="CCCCCC" SRC_TYPE="INTERNAL"/,/DIMENSIONS/ {print $0}' filename
Linux awk命令問(wèn)題
head -n 3 /etc/passwd|awk -F ':' '$1="root"' 這里$1="root",表示將第1列的值賦值為root,因此上述命令表示:將/etc/passwd中前3行按照‘:’分隔后第一列以root顯示,并列印其他列。
awk -F ':' '$3=="0"' /etc/passwd
這里$3=="0",表示將第三列與"0”進(jìn)行匹配,以什么方式匹配呢?以‘:’分隔后的第三列進(jìn)行匹配并列印。這里是匹配列印,所以列印的是匹配的那一行(被:分隔后),而不是顯示分隔后的列。
所以,區(qū)別在于一個(gè)是分隔后賦值列印分隔后列的值,一個(gè)是按照指定分隔方式進(jìn)行匹配找到匹配的行,列印的是匹配的那一行。
linux的awk命令問(wèn)題
一行里 第一個(gè)元素和第三個(gè)元素
linux下 awk命令問(wèn)題
1、其實(shí)這樣基本滿(mǎn)足要求。但是確實(shí)不夠嚴(yán)謹(jǐn)。試試是否可以。
ps -le | grep sshd | awk '{print $4}'
2、對(duì)ps 命令用的最多的是ps -ef 對(duì)el 我不是很了解具體輸出什么。當(dāng)然,是不是你壓根就沒(méi)有這個(gè)sshd服務(wù)啟動(dòng)。這些都先驗(yàn)證一下。一步一步的輸出,看看問(wèn)題出現(xiàn)在管道的哪一個(gè)環(huán)節(jié)。
3、或者這個(gè) $14==sshd 欄位你指定錯(cuò)了。 awk $指定的變數(shù)是從1 開(kāi)始的。$0是整個(gè)行。這個(gè)不要忘記了哦。
如果上述1第一種情況可以輸出,第二種2不可以話(huà),可能就驗(yàn)證了我的假設(shè)。你欄位拆解出現(xiàn)錯(cuò)誤。把$14 這個(gè)欄位好好看看。
linux awk命令基礎(chǔ) 怎么在終端寫(xiě)
awk一般用于文字處理,通常用作資料提取。終端書(shū)寫(xiě)demo
awk '{print }' info.txt
以上是輸出文字檔案info.txt的所有內(nèi)容,請(qǐng)使用實(shí)際檔案進(jìn)行替換info.txt
ps -ef|grep process_name | awk -F"" '{print $2}'
以上是查詢(xún)process_name程序的ID資訊,把查詢(xún)資訊作為引數(shù)傳給awk進(jìn)行過(guò)濾,請(qǐng)使用實(shí)際程序名替換process_name。
awk命令在 linux和aix下的區(qū)別
三種呼叫awk的命令方式:
1.命令列方式:awk [-F field-separator] 'mands' input-file(s)
-F選項(xiàng)可選:awk -F: 'mands' input-file
2.將所有的awk命令插入一個(gè)檔案,并是awk程式可執(zhí)行,然后用awk命令直譯器作為指令碼的首行,
以便通過(guò)鍵入指令碼名稱(chēng)來(lái)呼叫它。
3.將所有的awk命令插入一個(gè)單獨(dú)檔案,然后呼叫:
awk -f awk-script-file input-files(s)
-f:指明在檔案awk-script-file中的awk指令碼
input-file(s):使用awk進(jìn)行瀏覽的檔名。
awk指令碼
在命令中呼叫awk時(shí),awk指令碼由各種操作和模式組成。
-F,awk每次讀一條記錄或一行,并使用指定的分隔符分分隔指定域;
所沒(méi)分隔符,則使用空格。
任何awk語(yǔ)句都由模式和動(dòng)作組成
模式,決定動(dòng)作語(yǔ)句何時(shí)觸發(fā)及觸發(fā)事件,若忽略模式部分,動(dòng)作將時(shí)刻保持執(zhí)行狀態(tài)。
模式,可是任何條件語(yǔ)句,或符合語(yǔ)句,或正則表示式。
BEGIN:設(shè)定計(jì)數(shù),列印頭,在任何文字瀏覽動(dòng)作之前;
END:用來(lái)在awk完成檔案瀏覽動(dòng)作后列印輸出檔案總數(shù)和結(jié)尾狀態(tài)標(biāo)志。
動(dòng)作,在{}內(nèi)指定;大多用來(lái)列?。焕锩婵砂篿f,looping,回圈推出結(jié)構(gòu);
若不指明采取動(dòng)作,awk將列印所有瀏覽出來(lái)的記錄。
如何在Linux中使用awk命令
awk例項(xiàng)
1、cat /etc/passwd|awk -F: '{print $1}'
2、linux的awk一般都是gawk,/bin/awk - gawk
3、awk ‘/abc/’ file.txt 顯示檔案中包含abc行。類(lèi)似grep abc a.txt
4、awk ‘{print NR,NF,$1,$NF,}’ file.txt按空格分隔列,顯示當(dāng)前記錄號(hào)、域數(shù)和每一行的第一列和最后一列。
-F引數(shù)可以設(shè)定分割引數(shù),例如按:分割
awk -F: ‘{print $1}’ /etc/passwd
或者cat file|awk -F “|” ‘{print $1}’
5、awk程式語(yǔ)言
cat v.txt|awk ‘{print length($1)}’
6、awk中使用NR和FNR,一般在awk處理多個(gè)檔案時(shí),NR==FNR才有意義
NF 當(dāng)前記錄中的欄位數(shù)。
NR 當(dāng)前記錄數(shù)。
FNR同NR,但相對(duì)于當(dāng)前檔案。
awk ‘{print NR,FNR}’ test.txt test2.txt
awk ‘{if(NR==FNR){a[FNR]=$1;}else{print $1,a[FNR]}}’ b.txt a.txt
7、列印奇數(shù)行與偶數(shù)行
awk ‘NR%2’ test.txt
awk ‘!(NR%2)’ test.txt
8、殺死tomcat的s.sh指令碼
#!/bin/sh
ps -ef| grep tomcat |grep -v grep | awk ‘{print $2}’ |xargs kill -9
9、列印前7列
cat a.txt|awk ‘{NF=7}1’ b.txt
tail -f aess.log|awk ‘NF=7′ OFS=’\t’ b.txt
cut -d”,” -f3-6 urfile
LINUX系統(tǒng)怎么使用awk命令實(shí)現(xiàn)下述操作
cat file|awk -F"name=" '{print $2}'|awk -F\" '{print $1}'
試試看,第二個(gè)”的轉(zhuǎn)義,我沒(méi)測(cè)試,可以自己調(diào)下
awk是一個(gè)強(qiáng)大的文本分析工具,相對(duì)于grep的查找,sed的編輯,awk在對(duì)數(shù)據(jù)分析并生成報(bào)告時(shí),顯得尤為強(qiáng)大。
簡(jiǎn)單來(lái)說(shuō)awk就是把文件逐行的讀入,以空格為默認(rèn)分隔符將每行切片,切開(kāi)的部分再進(jìn)行各種分析處理。
awk有三個(gè)不同的版本:awk、nawk和gawk,未作特別說(shuō)明,一般指gawk,gawk是awk的GNU版本。
之所以叫awk是因?yàn)槠淙×巳粍?chuàng)始人Alfred Aho,Peter Weinberger,和Brian Kernighan的Family
Name的首字符。
awk格式:
格式: sed -n '3p' sed.txt
找誰(shuí)干啥(條件動(dòng)作)
awk格式
#取出/etc/passwd 第1行的第1列和第3列
awk -F: 'NR==1{print $1,$3}' /etc/passwd
awk 選項(xiàng) '條件{動(dòng)作}' /etc/passwd
條件: 哪一行,過(guò)濾什么內(nèi)容
動(dòng)作: print輸出與顯示 ,計(jì)算....
awk取行:與sed類(lèi)似
案例01:取出sed.txt的第2行
[root@oldboy81-golden-lnb /oldboy]# cat sed.txt
101,oldgirl,CEO
102,zhangya,CTO
103,lidao007,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboy81-golden-lnb /oldboy]# awk 'NR==2' sed.txt
102,zhangya,CTO
#awk '行號(hào) 等于 2' sed.txt
#NR awk內(nèi)置變量
Number of Record 記錄號(hào)(行號(hào))
案例02:取出sed.txt中包含oldboy或lidao的行
[root@oldboy81-golden-lnb /oldboy]# sed -rn '/oldboy|lidao/p' sed.txt
103,lidao007,COO
110,lidao,COCO
[root@oldboy81-golden-lnb /oldboy]# awk '/oldboy|lidao/' sed.txt
103,lidao007,COO
110,lidao,COCO
案例03:取出文件第2行到第5行內(nèi)容
#awk '行號(hào)大于等于2 并且 行號(hào)小于等于5' sed.txt
#方法01
awk 'NR=2 NR=5' sed.txt #必會(huì)
表示并且.
#方法02
sed -n '2,5p' sed.txt
#方法03 了解
awk 'NR==2,NR==5' sed.txt #從行號(hào)是2的行開(kāi)始 到 行號(hào)是5的行結(jié)束( 了解)
案例04:取出文件第3行到最后一行內(nèi)容
[root@oldboy81-golden-lnb /oldboy]# awk 'NR = 3' sed.txt
103,lidao007,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboy81-golden-lnb /oldboy]# sed -n '3,$p' sed.txt
103,lidao007,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
案例05:取出從包含oldboy的行到lidao的行
[root@oldboy81-golden-lnb /oldboy]# cat sed.txt
101,oldgirl,CEO
102,zhangya,CTO
103,lidao007,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
root@oldboy81-golden-lnb /oldboy]# sed -n '/old/,/lidao/p' sed.txt
101,oldgirl,CEO
102,zhangya,CTO
103,lidao007,COO
[root@oldboy81-golden-lnb /oldboy]# awk '/old/ , /lidao/' sed.txt
101,oldgirl,CEO
102,zhangya,CTO
103,lidao007,COO
awk是一個(gè)強(qiáng)大的文本分析工具,與grep、sed相比,awk在對(duì)數(shù)據(jù)分析并生成報(bào)告時(shí),顯得有很大的優(yōu)勢(shì)。
awk有三個(gè)不同的版本:awk、nawk和gawk,在沒(méi)有做特殊說(shuō)時(shí)的時(shí)候默認(rèn)的就是gawk,gawk是awk的GNU版本。
其中command是真正的awk命令,-F表示域的分隔符,是個(gè)可選項(xiàng)。Filename是等待處理的文件
將所有的awk命令寫(xiě)入到一個(gè)文件,并使用該文件有X權(quán)限,然后awk命令解釋器作為腳本的首行,也就是說(shuō)可以把腳本最開(kāi)始的 #!/bin/bash 換成 #!/bin/awk
最后直接執(zhí)行這個(gè)腳本文件就行了。
-f 指定要加載的awk腳本,是一個(gè)文件。Filename是等待處理的文件
awk的工作流程是這樣的:讀入一行后(最后面帶有” ”的),就按-F指定的分隔符來(lái)將該行劃分成N個(gè)區(qū)域,$0表示所有的區(qū)域,$1表示第一個(gè)域,$2表示第二個(gè)域,依此類(lèi)推,$n表示第n個(gè)域。
總結(jié):awk先執(zhí)行BEGIN內(nèi)的命令,然后再讀入文件中的行,接著就是按照指定的分隔符將該行分成N個(gè)區(qū)域,然后再來(lái)執(zhí)行模式所對(duì)應(yīng)的動(dòng)作action。然后,再來(lái)讀入第二行。。再重復(fù)執(zhí)行action,直到所有的行都處理完成。最后再執(zhí)行END中的命令。
注意:' // '之間是支持正則表達(dá)式的,如果此處只有pattern,而沒(méi)有action,那么awk默認(rèn)會(huì)把匹配到的行打印出來(lái)。
awk中的print還可以使用C語(yǔ)言中的printf來(lái)替代。在輸出格式比較復(fù)雜的時(shí)候使用printf函數(shù)會(huì)比print函數(shù)要更直觀一些,如下:
還可以使用-v key=value來(lái)自定義變量。如下:
awk中的條件語(yǔ)句是從C中借鑒過(guò)來(lái)的
語(yǔ)法:if (condition) {then-body} else {else-body}
例如使用awk來(lái)統(tǒng)計(jì)某個(gè)目錄下的普通文件的大小,不包括子目錄的,并過(guò)濾掉目錄。
循環(huán)語(yǔ)句也和C中的一樣,支持while、do/while、for、continue、break等關(guān)鍵字。
break和continue常用于循環(huán)中;
在awk中,數(shù)組的下標(biāo)可以是數(shù)字或字母。一般awk中的數(shù)組的作用是從記錄中收集信息,用于計(jì)算總和、統(tǒng)計(jì)單詞等。
在awk中要?jiǎng)h除一個(gè)元素的時(shí)候使用 delete array[index]
更多請(qǐng)參見(jiàn)awk官方文檔[]
當(dāng)前名稱(chēng):linuxaws命令 linux w命令
文章出自:http://jinyejixie.com/article20/doseico.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站排名、App開(kāi)發(fā)、Google、網(wǎng)站設(shè)計(jì)公司、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)