awk使用linux命令 linux命令 awk

Linux入門系列——awk命令詳解

awk是一個強大的文本分析工具,與grep、sed相比,awk在對數(shù)據(jù)分析并生成報告時,顯得有很大的優(yōu)勢。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),牧野企業(yè)網(wǎng)站建設(shè),牧野品牌網(wǎng)站建設(shè),網(wǎng)站定制,牧野網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,牧野網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

awk有三個不同的版本:awk、nawk和gawk,在沒有做特殊說時的時候默認的就是gawk,gawk是awk的GNU版本。

其中command是真正的awk命令,-F表示域的分隔符,是個可選項。Filename是等待處理的文件

將所有的awk命令寫入到一個文件,并使用該文件有X權(quán)限,然后awk命令解釋器作為腳本的首行,也就是說可以把腳本最開始的 #!/bin/bash 換成 #!/bin/awk

最后直接執(zhí)行這個腳本文件就行了。

-f 指定要加載的awk腳本,是一個文件。Filename是等待處理的文件

awk的工作流程是這樣的:讀入一行后(最后面帶有” ”的),就按-F指定的分隔符來將該行劃分成N個區(qū)域,$0表示所有的區(qū)域,$1表示第一個域,$2表示第二個域,依此類推,$n表示第n個域。

總結(jié):awk先執(zhí)行BEGIN內(nèi)的命令,然后再讀入文件中的行,接著就是按照指定的分隔符將該行分成N個區(qū)域,然后再來執(zhí)行模式所對應(yīng)的動作action。然后,再來讀入第二行。。再重復(fù)執(zhí)行action,直到所有的行都處理完成。最后再執(zhí)行END中的命令。

注意:' // '之間是支持正則表達式的,如果此處只有pattern,而沒有action,那么awk默認會把匹配到的行打印出來。

awk中的print還可以使用C語言中的printf來替代。在輸出格式比較復(fù)雜的時候使用printf函數(shù)會比print函數(shù)要更直觀一些,如下:

還可以使用-v key=value來自定義變量。如下:

awk中的條件語句是從C中借鑒過來的

語法:if (condition) {then-body} else {else-body}

例如使用awk來統(tǒng)計某個目錄下的普通文件的大小,不包括子目錄的,并過濾掉目錄。

循環(huán)語句也和C中的一樣,支持while、do/while、for、continue、break等關(guān)鍵字。

break和continue常用于循環(huán)中;

在awk中,數(shù)組的下標可以是數(shù)字或字母。一般awk中的數(shù)組的作用是從記錄中收集信息,用于計算總和、統(tǒng)計單詞等。

在awk中要刪除一個元素的時候使用 delete array[index]

更多請參見awk官方文檔[]

每日一條linux 命令 : awk

一次讀取一行文本,按輸入分隔符進行切片,切成多個組成部分,將每片直接保存在內(nèi)建的變量中,$1,$2,$3....,引用指定的變量,可以顯示指定段,或者多個段。如果需要顯示全部的,需要使用$0來引用??梢詫蝹€片段進行判斷,也可以對所有段進行循環(huán)判斷。

其默認分隔符為空格

awk [options] 'program' FILE......

[options]說明

主要有兩種模式

1、 awk [options] 'scripts' file1,file2.....

在這種模式中,scripts主要是命令的堆砌,命令之間用 分號 分割;對輸入的文本行進行處理,通過命令 print,printf 或是輸出重定向的方式顯示出來,這里經(jīng)常用到的知識點是:awk的內(nèi)置變量,以及命令print和printf的使用

2、 awk [options] 'PATTERN{action}' file,file2.....

在這種模式中,最重要的是5種模式和5種action的使用,以及awk的數(shù)組的使用和內(nèi)置函數(shù)

其格式化輸出: printf FORMAT,item1,item2....

例子: awk '{printf "%-8s %-8s %-8s %-18s %-22s %-15s\n",$1,$2,$3,$4,$5,$6}' netstat.txt

格式符

修飾符

輸出重定向

awk [option] 'PATTERN{action}' file1,file2....

Linux 簡單使用awk命令

我使用awk命令時,用的次數(shù)最多的是 從stdin或文件里選取幾列輸出 。

awk的print語句:

很久之前,在python celery文檔里見過下面的這個命令,正是因為當時看不懂這個命令,才開始淺學(xué)awk和xargs。

Linux三劍客awk命令篇二:命令操作符

Linux三劍客awk命令篇二:命令操作符

關(guān)于awk的原理等基本知識請參考上篇:

Linux三劍客awk命令篇一:原理及基本命令

補充

1、語法格式:

(1) Awk完整語法

awk 'BEGIN{commands} pattern{commands}END{commands} ' file

BEGIN{commands}:處理數(shù)據(jù)前執(zhí)行的命令。

END{commands}:處理完數(shù)據(jù)后執(zhí)行的命令。

這兩個命令可以省略。見(2)

(2) Awk基本語法

awk -F '分割符' '/模式/{動作} ' file

這里的 '/模式/{動作} ' 類似于sed的命令格式。

模式:

(1) 正則表達式(注意格式: /正則表達式/ )

(2) 條件表達式(例如: 等等)

總結(jié):

這里的模式通俗來講是 用來找誰, 而動作表示是 干啥。

2、 awk的命令操作符

(1) 正則表達式與bash一致

(2) + - * / % ++ --

(3) || !

(4) = = != == ~ !~

~:表示匹配后面的模式,用于字段,見 案例1 。

其余的都比較常見就不舉例了。

3、案例

案例1:

~使用案例

awk -F : '$3 ~ /\...\/{print $1,$3}' /etc/passwd

解釋:

模式:\...\

\ \表示定界符,只匹配3個字符。

$3 ~:表示$3這個字段必須符合后面模式(\...\)的要求。

見如下輸出結(jié)果,$3都是3個字符。

案例2:

% || ==使用案例

seq 100 | awk '$1 % 7 == 0 || $1 ~ /^99/{print $1}'

輸出結(jié)果的要求:

整除7或者以99開頭

案例3:

++使用

awk 'BEGIN{num=0}{num++}END{print num}' /etc/passwd

簡單解釋:

BEGIN{num=0}:定義一個變量num

{num++}:這里沒有模式,只有動作。

即每匹配到文件/etc/passwd的一行就執(zhí)行num++

END{print num}:文件遍歷結(jié)束,打印num的值,即文件的行數(shù)。

這里我們使用wc -l驗證也是沒問題的。

cat /etc/passwd | wc -l

上面3個案例簡單的使用了awk的命令操作符。

雖然只是用到了幾個簡單的,但是其他同理,大家可以執(zhí)行操作。

下一篇:

Linux三劍客awk命令篇二之內(nèi)部變量

歡迎大家給予寶貴的意見或者建議。

歡迎大家補充或者共享一些其他的方法。

感謝支持。

linux里awk是做什么的,請詳細說明

awk是一個強大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對數(shù)據(jù)分析并生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。

awk有三個不同的版本:awk、nawk和gawk,未作特別說明,一般指gawk,gawk是awk的GNU版本。

之所以叫awk是因為其取了三位創(chuàng)始人Alfred Aho,Peter Weinberger,和Brian Kernighan的Family Name

的首字符。

使用方法:

awk'{pattern+action}'{filenames}

盡管操作可能會很復(fù)雜,但語法總是這樣,其中pattern表示awk在數(shù)據(jù)中查找的內(nèi)容,而action是在找到匹配內(nèi)容時所執(zhí)行的一系列命令?;ɡㄌ?{})不需要在程序中始終出現(xiàn),但它們用于根據(jù)特定的模式對一系列指令進行分組。pattern就是要表示的正則表達式,用斜杠括起來。

awk語言的最基本功能是在文件或者字符串中基于指定規(guī)則瀏覽和抽取信息,awk抽取信息后,才能進行其他文本操作。完整的awk腳本通常用來格式化文本文件中的信息。

通常,awk是以文件的一行為處理單位的。awk每接收文件的一行,然后執(zhí)行相應(yīng)的命令,來處理文本。

調(diào)用awk的三種方式

1、命令行方式

awk[-F field-separator]'commands'input-file(s)

其中,commands是真正awk命令,[-F域分隔符]是可選的。input-file(s)是待處理的文件。

在awk中,文件的每一行中,由域分隔符分開的每一項稱為一個域。通常,在不指名-F域分隔符的情況下,默認的域分隔符是空格。

2、shell腳本方式

將所有的awk命令插入一個文件,并使awk程序可執(zhí)行,然后awk命令解釋器作為腳本的首行,一遍通過鍵入腳本名稱來調(diào)用。

相當于shell腳本首行的:#!/bin/sh

可以換成:#!/bin/awk

3、將所有的awk命令插入一個單獨文件,然后調(diào)用:

awk-f awk-script-file input-file(s)

其中,-f選項加載awk-script-file中的awk腳本,input-file(s)跟上面的是一樣的。

網(wǎng)頁題目:awk使用linux命令 linux命令 awk
標題鏈接:http://muchs.cn/article22/docoocc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、商城網(wǎng)站、網(wǎng)站排名、全網(wǎng)營銷推廣、網(wǎng)站導(dǎo)航網(wǎng)站維護

廣告

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

成都網(wǎng)頁設(shè)計公司