新聞中心
如何在Linux中使用awk命令
awk:用于一行中分成數(shù)個(gè)“字段”來(lái)處理。適合處理

創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十年品質(zhì),值得信賴!
小型數(shù)據(jù)。
運(yùn)行模式:awk
'條件類型1{動(dòng)作1}
條件類型2{動(dòng)作2}
...'
filename
#
last
|
awk
$1
"\t"
$3}'
==
查看登錄者的數(shù)據(jù),只顯示登錄名和ip地址,并以[tab]隔開(kāi)
awk
的內(nèi)置變量
變量名稱
代表的含義
NF
每一行($0)擁有的字段總數(shù)
NR
當(dāng)前
awk
所處理的是
“第幾行”
數(shù)據(jù)
FS
當(dāng)前分隔符,默認(rèn)空格鍵
awk
的邏輯運(yùn)算符
運(yùn)算單元
代表含義
大于
小于
=
大于或等于
=
小于或等于
==
等于
!=
不等于
范例:
cat
/etc/passwd
|
awk
'{FS=":"}
$3
10
$1
"\t"
$3}'
==
文件/etc/passwd是以":"分隔的,查看第三欄小于10的數(shù)據(jù),并且只顯示帳號(hào)與第三欄
以上是我對(duì)awk的總結(jié),希望對(duì)你有幫助,是我寫(xiě)的哦,不是復(fù)制的。
Linux入門(mén)系列——awk命令詳解
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è)域,依此類推,$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官方文檔[]
linux里awk是做什么的,請(qǐng)?jiān)敿?xì)說(shuō)明
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'{pattern+action}'{filenames}
盡管操作可能會(huì)很復(fù)雜,但語(yǔ)法總是這樣,其中pattern表示awk在數(shù)據(jù)中查找的內(nèi)容,而action是在找到匹配內(nèi)容時(shí)所執(zhí)行的一系列命令?;ɡㄌ?hào)({})不需要在程序中始終出現(xiàn),但它們用于根據(jù)特定的模式對(duì)一系列指令進(jìn)行分組。pattern就是要表示的正則表達(dá)式,用斜杠括起來(lái)。
awk語(yǔ)言的最基本功能是在文件或者字符串中基于指定規(guī)則瀏覽和抽取信息,awk抽取信息后,才能進(jìn)行其他文本操作。完整的awk腳本通常用來(lái)格式化文本文件中的信息。
通常,awk是以文件的一行為處理單位的。awk每接收文件的一行,然后執(zhí)行相應(yīng)的命令,來(lái)處理文本。
調(diào)用awk的三種方式
1、命令行方式
awk[-F field-separator]'commands'input-file(s)
其中,commands是真正awk命令,[-F域分隔符]是可選的。input-file(s)是待處理的文件。
在awk中,文件的每一行中,由域分隔符分開(kāi)的每一項(xiàng)稱為一個(gè)域。通常,在不指名-F域分隔符的情況下,默認(rèn)的域分隔符是空格。
2、shell腳本方式
將所有的awk命令插入一個(gè)文件,并使awk程序可執(zhí)行,然后awk命令解釋器作為腳本的首行,一遍通過(guò)鍵入腳本名稱來(lái)調(diào)用。
相當(dāng)于shell腳本首行的:#!/bin/sh
可以換成:#!/bin/awk
3、將所有的awk命令插入一個(gè)單獨(dú)文件,然后調(diào)用:
awk-f awk-script-file input-file(s)
其中,-f選項(xiàng)加載awk-script-file中的awk腳本,input-file(s)跟上面的是一樣的。
標(biāo)題名稱:awk調(diào)用linux命令,awk linux命令
分享網(wǎng)址:http://www.dlmjj.cn/article/dssogss.html


咨詢
建站咨詢
