五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

awk是什么?awk工作原理是什么?怎么用awk?

2021-10-14 11:10 作者:Vecloud_  | 我要投稿


一、awk介紹?
1. awk概述awk是一種==編程語言==,主要用于在linux/unix下對==文本和數(shù)據(jù)==進行處理,是linux/unix下的一個工具。數(shù)據(jù)可以來自標準輸入、一個或多個文件,或其它命令的輸出。awk的處理文本和數(shù)據(jù)的方式:==逐行掃描==文件,默認從第一行到最后一行,尋找匹配的==特定模式==的行,并在這些行上進行你想要的操作。awk分別代表其作者姓氏的第一個字母。因為它的作者是三個人,分別是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供了Bell實驗室和GNU的一些擴展。?
下面介紹的awk是以GNU的gawk為例的,在linux系統(tǒng)中已把awk鏈接到gawk,所以下面全部以awk進行介紹。2. awk能干啥?awk==用來處理文件和數(shù)據(jù)==的,是類unix下的一個工具,也是一種編程語言可以用來==統(tǒng)計數(shù)據(jù)==,比如網(wǎng)站的訪問量,訪問的IP量等等支持條件判斷,支持for和while循環(huán)二、awk使用方式1. ==命令行模式使用==1)語法結(jié)構(gòu)awk?選項?'命令部分'?文件名特別說明:引用shell變量需用雙引號引起2)常用選項介紹==-F==?定義字段分割符號,默認的分隔符是==空格==-v?定義變量并賦值3)=='==命名部分說明=='==正則表達式,地址定位'/root/{awk語句}' ??????sed中:?'/root/p''NR==1,NR==5{awk語句}' ?????sed中:?'1,5p''/^root/,/^ftp/{awk語句}' ??sed中:'/^root/,/^ftp/p'{awk語句1==;==awk語句2==;==...}'{print $0;print $1}' ???sed中:'p''NR==5{print $0}' ???????sed中:'5p'注:awk命令語句間用分號間隔BEGIN...END....'BEGIN{awk語句};{處理中};END{awk語句}''BEGIN{awk語句};{處理中}''{處理中};END{awk語句}'2.?腳本模式使用1)腳本編寫#!/bin/awk -f ???定義魔法字符以下是awk引號里的命令清單,不要用引號保護命令,多個命令用分號間隔BEGIN{FS=":"}NR==1,NR==3{print $1"\t"$NF}...2)腳本執(zhí)行方法1:awk?選項?-f awk的腳本文件 要處理的文本文件awk -f awk.sh filenamesed -f sed.sh -i filename方法2:./awk的腳本文件(或者絕對路徑)?要處理的文本文件./awk.sh filename./sed.sh filename三、?awk內(nèi)部相關變量變量變量說明備注==$0==當前處理行的所有記錄==\$1,\$2,\$3...\$n==文件中每行以==間隔符號==分割的不同字段awk -F: '{print \$1,\$3}'==NF==當前記錄的字段數(shù)(列數(shù))awk -F: '{print NF}'==$NF==最后一列$(NF-1)表示倒數(shù)第二列==FNR/NR==行號==FS==定義間隔符'BEGIN{FS=":"};{print \$1,$3}'==OFS==定義輸出字段分隔符,==默認空格=='BEGIN{OFS="\t"};print \$1,$3}'RS輸入記錄分割符,默認換行'BEGIN{RS="\t"};{print $0}'ORS輸出記錄分割符,默認換行'BEGIN{ORS="\n\n"};{print \$1,$3}'FILENAME當前輸入的文件名1、==常用內(nèi)置變量舉例==# awk -F: '{print $1,$(NF-1)}' 1.txt# awk -F: '{print $1,$(NF-1),$NF,NF}' 1.txt# awk '/root/{print $0}' 1.txt# awk '/root/' 1.txt# awk -F: '/root/{print $1,$NF}' 1.txt root /bin/bash# awk -F: '/root/{print $0}' 1.txt ??root:x:0:0:root:/root:/bin/bash# awk 'NR==1,NR==5' 1.txt # awk 'NR==1,NR==5{print $0}' 1.txt# awk 'NR==1,NR==5;/^root/{print $0}' 1.txt root:x:0:0:root:/root:/bin/bashroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin2、內(nèi)置變量分隔符舉例FS和OFS:# awk 'BEGIN{FS=":"};/^root/,/^lp/{print $1,$NF}' 1.txt# awk -F: 'BEGIN{OFS="\t\t"};/^root/,/^lp/{print $1,$NF}' 1.txt ???root ?????/bin/bashbin ??????/sbin/nologindaemon ????/sbin/nologinadm ??????/sbin/nologinlp ??????/sbin/nologin# awk -F: 'BEGIN{OFS="@@@"};/^root/,/^lp/{print $1,$NF}' 1.txt ??root@@@/bin/bashbin@@@/sbin/nologindaemon@@@/sbin/nologinadm@@@/sbin/nologinlp@@@/sbin/nologin[root@server shell07]# RS和ORS:修改源文件前2行增加制表符和內(nèi)容:vim 1.txtroot:x:0:0:root:/root:/bin/bash hello ?worldbin:x:1:1:bin:/bin:/sbin/nologin ???test1 ?test2# awk 'BEGIN{RS="\t"};{print $0}' 1.txt# awk 'BEGIN{ORS="\t"};{print $0}' 1.txt四、?awk工作原理awk -F: '{print $1,$3}' /etc/passwd?
awk使用一行作為輸入,并將這一行賦給內(nèi)部變量$0,每一行也可稱為一個記錄,以換行符(RS)結(jié)束?
每行被間隔符==:==(默認為空格或制表符)分解成字段(或域),每個字段存儲在已編號的變量中,從$1開始?
問:awk如何知道用空格來分隔字段的呢??
答:因為有一個內(nèi)部變量==FS==來確定字段分隔符。初始時,F(xiàn)S賦為空格?
awk使用print函數(shù)打印字段,打印出來的字段會以==空格分隔==,因為\$1,\$3之間有一個逗號。逗號比較特殊,它映射為另一個內(nèi)部變量,稱為==輸出字段分隔符==OFS,OFS默認為空格?
awk處理完一行后,將從文件中獲取另一行,并將其存儲在$0中,覆蓋原來的內(nèi)容,然后將新的字符串分隔成字段并進行處理。該過程將持續(xù)到所有行處理完畢

了解更多網(wǎng)絡知識關注:http://www.vecloud.com/

awk是什么?awk工作原理是什么?怎么用awk?的評論 (共 條)

分享到微博請遵守國家法律
星子县| 两当县| 平遥县| 定边县| 林西县| 连城县| 南汇区| 喀喇沁旗| 满城县| 遵化市| 五峰| 天柱县| 溆浦县| 宿松县| 文安县| 咸阳市| 仙桃市| 绥滨县| 陇西县| 义马市| 长海县| 永昌县| 福安市| 菏泽市| 崇文区| 定安县| 阿巴嘎旗| 剑阁县| 公主岭市| 锦屏县| 阿城市| 民权县| 离岛区| 太和县| 普定县| 吴桥县| 平度市| 宜宾县| 辛集市| 仙居县| 恩平市|