日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

10個(gè)超級(jí)棒的Awk命令

 青檸二鍋頭 2021-04-26
Awk命令是處理數(shù)據(jù)的強(qiáng)大工具。它獲取輸入數(shù)據(jù),對(duì)其進(jìn)行操作,并在標(biāo)準(zhǔn)輸出中給出結(jié)果。可以對(duì)文件的行和列執(zhí)行各種操作。
要有效地處理數(shù)據(jù),了解“awk”命令的基本要素是非常重要的,這篇文章將涵蓋“awk”命令的關(guān)鍵特性。讓我們先看看語(yǔ)法:
$ awk [options] [file]
下表列出了一些常用的選項(xiàng):
選項(xiàng)說明
-FTo specify a file separator
-f指定包含“awk”腳本的文件
-v 指定變量
讓我們看一些有關(guān)“ awk”命令用法的示例,為了演示,我新建了一個(gè)文本文件,名稱為.txt:
1、如何使用awk命令打印文件的列?
“ awk”命令可用于獲取文本文件的特定列。要打印文件的內(nèi)容,請(qǐng)使用:
linuxmi@linuxmi:~/www.$ cat .txt

圖片

現(xiàn)在,打印文件的第二列,使用:
linuxmi@linuxmi:~/www.$ awk '{print $2}' linuxmi.txt
圖片
要打印多個(gè)字段,使用命令:
linuxmi@linuxmi:~/www.$ awk '{print $1,$2,$3}' linuxmi.txt
圖片
如果你不使用逗號(hào)“,”,那么輸出將沒有空格:
linuxmi@linuxmi:~/www.$ awk '{print $1$2$3}' linuxmi.txt
圖片
更新地址:https://www./10-awk-mingling.html
2、如何使用正則表達(dá)式與awk命令:
為了匹配字符串或任何表達(dá)式,我們使用斜杠' // ',例如,如果你想打印正在學(xué)習(xí)'lishi'的人的名字,那么使用:
linuxmi@linuxmi:~/www.$ awk '/歷史/{print $2}' linuxmi.txt
張三
方咪
圖片
輸出清楚地表明,只有“張三”和“方咪”正在學(xué)習(xí)“歷史”課程。
3、如何通過“awk”命令使用關(guān)系表達(dá)式:
為了匹配特定字段的內(nèi)容,可以使用關(guān)系表達(dá)式。要將任何字符串或表達(dá)式與字段進(jìn)行匹配,請(qǐng)指示該字段,并使用比較符“?”與以下命令中顯示的模式進(jìn)行比較:
linuxmi@linuxmi:~/www.$ awk '$3 ~/語(yǔ)/ {print $2}' linuxmi.txt
陳明
魚魚
圖片
上面的輸出顯示第2列中的每個(gè)字段與第3列中包含“語(yǔ)”的每個(gè)字段的對(duì)比。
要獲得上述命令的相反輸出,請(qǐng)使用“! ~”運(yùn)算符:
linuxmi@linuxmi:~/www.$ awk '$3!~/語(yǔ)/ {print $2}' linuxmi.txt
圖片
為了進(jìn)行比較,我們還可以使用大于“>”,小于“ <”和等于“ =”的運(yùn)算符:
linuxmi@linuxmi:~/www.$ awk '$4>81 {print $2}' linuxmi.txt
李華
方咪
圖片
輸出顯示了獲得81分以上得分的人員的姓名。
4、如何通過awk命令使用范圍模式:
范圍也可以用于搜索;只需使用逗號(hào)“,”來分隔范圍,如下面提到的命令所示:
linuxmi@linuxmi:~/www.$ awk '/李四/,/陳明/ {print $3}' linuxmi.txt
輸出顯示第2列中從“李四”到“陳明”之間的課程。請(qǐng)參見下面的示例:
圖片
linuxmi@linuxmi:~/www.$ awk '$4==87,$4==91 {print $2}' linuxmi.txt
輸出顯示第2列中人員的姓名,第4列中標(biāo)記“ 87到91”的范圍。
圖片
5、如何使用邏輯運(yùn)算符組合模式:
使用邏輯運(yùn)算符(例如OR“ ||”,“ &&&”)可以組合模式進(jìn)行搜索。使用以下命令
linuxmi@linuxmi:~/www.$ awk '$4>81 && $6>0.4 {print $2}' linuxmi.txt
李華
方咪
圖片
上面的命令將在第四個(gè)字段上打印大于81的人名,在第六個(gè)字段上打印大于0.4的人名。并且只有兩個(gè)記錄滿足條件。
6、awk命令的特殊表達(dá)式:
有兩個(gè)特殊表達(dá)式,“ BEGIN”和“ END”:
開始:在處理數(shù)據(jù)之前執(zhí)行操作
結(jié)束:在處理完數(shù)據(jù)后執(zhí)行一項(xiàng)操作
linuxmi@linuxmi:~/www.$ awk 'BEGIN {print '處理已經(jīng)開始'}; {print $2}; END {print '處理已結(jié)束'}' linuxmi.txt
7、awk命令的有用的內(nèi)置變量:
awk命令具有各種有助于數(shù)據(jù)處理的變量:
變量說明
NF它給出了數(shù)據(jù)中字段的數(shù)量
NR給出當(dāng)前記錄的編號(hào)
FILENAME顯示當(dāng)前正在處理的文件的名稱
FS 和 OFS字段分隔符和輸出字段分隔符
RS 和 ORS分離記錄和輸出記錄分隔符
示例:
linuxmi@linuxmi:~/www.$ awk 'END{print '文件名是 ', FILENAME, '有', NF, '個(gè)字段和', NR, '個(gè)記錄'}' linuxmi.txt
我們使用“ END”,但是如果使用“ BEGIN”,則輸出將給出0個(gè)字段和0個(gè)記錄。
圖片
8、如何更改記錄分隔符:
記錄中的默認(rèn)分隔符通常為空格;如果有逗號(hào)“,”或點(diǎn)“?!弊鳛樽侄畏指舴?,然后將“ FS”選項(xiàng)與分隔符一起使用。
我們?cè)賮砜匆粋€(gè)文件,其中的數(shù)據(jù)字段之間用逗號(hào)“:”隔開:
linuxmi@linuxmi:~/www.$ cat linuxmi.txt
linuxmi@linuxmi:~/www.$ awk 'BEGIN {FS=':'}{print $2}' linuxmi.txt
由于文件的分隔符是冒號(hào),但是“ awk”命令甚至對(duì)此類文件也很有用,因此只需使用“ FS”選項(xiàng)即可。
也可以使用“ -F”:
linuxmi@linuxmi:~/www.$ awk -F ':' '{print $2}' linuxmi.txt
默認(rèn)記錄分隔符為“換行符”,并將記錄分隔符設(shè)置為“:”,請(qǐng)使用:
linuxmi@linuxmi:~/www.$ awk 'BEGIN{RS=':'}{print $1}' linuxmi.txt
圖片
9、Awk Actions:
Awk Actions是由“{}”括號(hào)括起來的小程序,它有多個(gè)用分號(hào)“;”分隔的語(yǔ)句。
使用“ awk”命令最常用的語(yǔ)句是“ print”語(yǔ)句。例如,要打印每條記錄的文本,請(qǐng)?jiān)谝?hào)中使用文本字符串:
linuxmi@linuxmi:~/www.$ awk '{print 'Linux迷 www.,' $2}' .txt
圖片
讓我們使用awk執(zhí)行簡(jiǎn)單的求和運(yùn)算:
linuxmi@linuxmi:~/www.$ awk '{sum += $4} END {printf '%d\n', sum}' .txt
圖片
10、創(chuàng)建awk程序:
讓我們從“ awk”編程開始,下面給出的編程只是在做乘法:
### Linux迷 www. ###
### Linux迷 www. ###
### Linux迷 www. ###
BEGIN {
i=2
while(j<4)
{
print 'The multiplication of 2 with' j ' is ' i*j;
j++
}
}
圖片
用“l(fā)inuxmi.awk”的名稱保存程序并運(yùn)行,打開終端并輸入:
linuxmi@linuxmi:~/www.$ awk -f linuxmi.awk
圖片
總結(jié):
“awk”命令是一種方便的命令,用于處理,掃描文本文件的數(shù)據(jù),例如分隔文件的任何特定字段;我們使用“ awk”命令。它使從文本文件中以任何形式或模式搜索任何內(nèi)容變得更加容易。在本指南中,我們了解“ awk”命令的基本知識(shí)及其用法?!?awk”命令可驗(yàn)證數(shù)據(jù),生成報(bào)告,甚至解析文件。使用簡(jiǎn)單的命令“ awk”還可以使用戶編寫微型程序來更有效地處理數(shù)據(jù)。

關(guān)注我們

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多