<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • shell腳本三劍客之a(chǎn)wk命令-創(chuàng)新互聯(lián)

            awk:

            創(chuàng)新互聯(lián)主營(yíng)江蘇網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶App定制開發(fā),江蘇h5微信平臺(tái)小程序開發(fā)搭建,江蘇網(wǎng)站營(yíng)銷推廣歡迎江蘇等地區(qū)企業(yè)咨詢

            測(cè)試用模版:

            M.Tansley 05/99 48311 Green  8  40 44.44

            J.Lulu   06/99 48317 green  9  24 2678.

            P.Bunnyaaa  02/99 48   Yellow  12 35 2658

            J.Troll  07/99 4842  Brown-3 12 26 266666

            L.Tansleyaaa 05/99 4712  Brown-2 12 30 44544

            模式和動(dòng)作:

             最常用的動(dòng)作是打印(print)也有較長(zhǎng)的動(dòng)作代碼if和while和for,

             模式可以是任何條件語句或復(fù)合語句或正則表達(dá)式也包括兩個(gè)特殊字段BEGIN和END。

            BEGIN的使用是在awk正式對(duì)文本做讀取操作之前,END則是在awk在做完所有操作之后

            awk腳本的輸入方法:

            腳本名(test.awk) 文件名(abc.txt)正規(guī)使用方法為方法一

            方法一:test.awk abc.txt

            方法二:test.awk < abc.txt

            方法三:abc.txt | test.awk

            awk使用時(shí)出現(xiàn)錯(cuò)誤的原因:

            確保整個(gè)awk命令用單引號(hào)括起來。

            確保命令內(nèi)所有引號(hào)成對(duì)出現(xiàn)。

            確保用花括號(hào)括起動(dòng)作語句,用圓括號(hào)括起條件語句。

            可能忘記使用花括號(hào),也許你認(rèn)為沒有必要,但awk不這樣認(rèn)為,將按之解釋語法。

            NR:表示awk開始執(zhí)行程序后所讀取的數(shù)據(jù)行數(shù)

            例:[root@localhost awk]# awk '{print NR}' data.f

            1

            2

            3

            4

            5

            釋:也可以在花括號(hào)前加入END字段,表示打印最后一行行數(shù)。

            $NF:最后一列數(shù)據(jù)

            例:[root@localhost awk]# awk '{print $NF}' data.f

            44.44

            2678.

            2658

            266666

            44544

            釋:可以在花括號(hào)前加入END,表示打印最后一行的最后一列。

            保存輸出:

            例:[root@localhost awk]# awk '{print $0}' data.f |tee wow

            M.Tansley 05/99 48311 Green  8  40 44.44

            J.Lulu   06/99 48317 green  9  24 2678.

            P.Bunnyaaa  02/99 48   Yellow  12 35 2658

            J.Troll  07/99 4842  Brown-3 12 26 266666

            L.Tansleyaaa 05/99 4712  Brown-2 12 30 44544

            釋:"$0"打印全行,tee是將管道符前面的結(jié)果保存到wow文件中同時(shí)標(biāo)準(zhǔn)輸出在屏幕上。

            打印報(bào)告頭和結(jié)束尾:

            例:[root@localhost awk]# awk 'BEGIN {print "name   color\n------------------------"} {print $1,$4}' data.f

            name   color

            ------------------------

            M.Tansley Green

            J.Lulu green

            P.Bunnyaaa Yellow

            J.Troll Brown-3

            L.Tansleyaaa Brown-2

            釋:”\n“另起一行

            例:[root@localhost awk]# awk 'BEGIN {print "name   color\n---------------"} {print $1,$4} END {print "\n-----------jieshu"}' data.f

            name   color

            --------------------

            M.Tansley Green

            J.Lulu green

            P.Bunnyaaa Yellow

            J.Troll Brown-3

            L.Tansleyaaa Brown-2

            ---------------jieshu

            [root@localhost awk]# awk 'BEGIN {print "name\tcolor"} {print $1"\t" $2}' data.f

            name   color

            M.Tansley    05/99

            J.Lulu  06/99

            P.Bunnyaaa    02/99

            J.Troll 07/99

            L.Tansleyaaa   05/99

            釋:”\t“執(zhí)行tab鍵

            正則表達(dá)式:

            在awk中正則表達(dá)式是使用斜線來表示的,例如,查找Green字符可以這樣表達(dá)"/Green/",在awk中可以使用的元字符有如下;

            \ :轉(zhuǎn)意符號(hào),如果在命令中有特殊符號(hào),但是不想用特殊符號(hào)的功能只需要在特殊符號(hào)前加轉(zhuǎn)義符號(hào)。

            . :一位任意數(shù)

            [] :為查詢大小寫信息.

            () :使用條件語句需要用圓括號(hào)。

            * :多位任意數(shù)。

            ^ :匹配模式頭部分

            $ :匹配模式尾部分

            | :或

            ? :匹配可能出現(xiàn)的字符

            + :使用+匹配一個(gè)或多個(gè)字符

            條件操作符:

            > :小于

            例:[root@localhost awk]# awk '$3 < "48" {print $0}' data.f

            L.Tansleyaaa 05/99 4712  Brown-2 12 30 44544

            例:[root@localhost awk]# awk '{if($6 > $7) print $1 "\tok"}' data.f.bak

            J.Troll ok

            <= :小于等于

            例:[root@localhost awk]# awk '$3 <= "48" {print $0}' data.f

            P.Bunnyaaa  02/99 48   Yellow  12 35 2658

            L.Tansleyaaa 05/99 4712  Brown-2 12 30 44544

            == :等于

            例:[root@localhost awk]# awk '$3 == "48" {print $0}' data.f

            P.Bunnyaaa  02/99 48   Yellow  12 35 2658

            != :不等于

            例:[root@localhost awk]# awk '$3 != "48" {print $0}' data.f

            M.Tansley 05/99 48311 Green  8  40 44.44

            J.Lulu   06/99 48317 green  9  24 2678.

            J.Troll  07/99 4842  Brown-3 12 26 266666

            L.Tansleyaaa 05/99 4712  Brown-2 12 30 44544

            例:[root@localhost awk]# awk '$0 !~ /Brown/' data.f

            M.Tansley 05/99 48311 Green  8  40 44.44

            J.Lulu   06/99 48317 green  9  24 2678.

            P.Bunnyaaa  02/99 48   Yellow  12 35 2658

            >= :大于等于

            例:[root@localhost awk]# awk '$3 >= "48" {print $0}' data.f

            M.Tansley 05/99 48311 Green  8  40 44.44

            J.Lulu   06/99 48317 green  9  24 2678.

            P.Bunnyaaa  02/99 48   Yellow  12 35 2658

            J.Troll  07/99 4842  Brown-3 12 26 266666

            ~ :匹配正則表達(dá)式

            例:[root@localhost awk]# awk '{if ($4~/Brown/) print $0}' data.f

            J.Troll  07/99 4842  Brown-3 12 26 266666

            L.Tansleyaaa 05/99 4712  Brown-2 12 30 44544

            例:[root@localhost awk]# awk '$0 ~/Brown/' data.f

            J.Troll  07/99 4842  Brown-3 12 26 266666

            L.Tansleyaaa 05/99 4712  Brown-2 12 30 44544

            !~ :不匹配正則表達(dá)式

            例:[root@localhost awk]# awk '$0 !~/Brown/' data.f

            M.Tansley 05/99 48311 Green  8  40 44.44

            J.Lulu   06/99 48317 green  9  24 2678.

            P.Bunnyaaa  02/99 48   Yellow  12 35 2658

            例:[root@localhost awk]# awk '{if ($4 !~/Brown/) print $0}' data.f

            M.Tansley 05/99 48311 Green  8  40 44.44

            J.Lulu   06/99 48317 green  9  24 2678.

            P.Bunnyaaa  02/99 48   Yellow  12 35 2658

            任意字符匹配:

            例:[root@localhost awk]# awk '$0~/^...a/ ' data.f

            M.Tansley 05/99 48311 Green  8  40 44.44

            L.Tansleyaaa 05/99 4712  Brown-2 12 30 44544

            釋:匹配開頭前三位是任意字符第四位是a的字段。

            “或”的使用:

            例:[root@localhost awk]# awk '$0 ~ /(Brown|gree)/' data.f

            J.Lulu   06/99 48317 green  9  24 2678.

            J.Troll  07/99 4842  Brown-3 12 26 266666

            L.Tansleyaaa 05/99 4712  Brown-2 12 30 44544

            例;[root@localhost awk]# awk '$0 ~ /(Brown|[Gg]ree)/' data.f

            M.Tansley 05/99 48311 Green  8  40 44.44

            J.Lulu   06/99 48317 green  9  24 2678.

            J.Troll  07/99 4842  Brown-3 12 26 266666

            L.Tansleyaaa 05/99 4712  Brown-2 12 30 44544

            行首:

            例:[root@localhost awk]# awk '/^J/' data.f

            J.Lulu   06/99 48317 green  9  24 2678.

            J.Troll  07/99 4842  Brown-3 12 26 266666

            符合模式:

            && :兩邊的是都為真,才能打印信息。(只針對(duì)一行有效)

            例[root@localhost awk]# awk '{if ($3~/48/ && $4~/[Gg]reen/) print $0}' data.f

            M.Tansley 05/99 48311 Green  8  40 44.44

            J.Lulu   06/99 48317 green  9  24 2678.

            || :一邊為真或全部為真

            例:[root@localhost awk]# awk '{if ($0~/Brown/ || $4~/[Gg]reen/) print $0}' data.f

            M.Tansley 05/99 48311 Green  8  40 44.44

            J.Lulu   06/99 48317 green  9  24 2678.

            J.Troll  07/99 4842  Brown-3 12 26 266666

            L.Tansleyaaa 05/99 4712  Brown-2 12 30 44544

            awk內(nèi)置變量:

            NR:文件行數(shù)

            NF:域塊個(gè)數(shù)

            FILENAME:所指定的文件名

            例:[root@localhost awk]# awk '{print NR,NF,$0} END{print FILENAME}' data.f

            1 7 M.Tansley 05/99 48311 Green  8  40 44.44

            2 7 J.Lulu   06/99 48317 green  9  24 2678.

            3 7 P.Bunnyaaa  02/99 48   Yellow  12 35 2658

            4 7 J.Troll  07/99 4842  Brown-3 12 26 266666

            5 7 L.Tansleyaaa 05/99 4712  Brown-2 12 30 44544

            data.f

            例:[root@localhost awk]# echo $PWD |awk -F"/" '{print $NF}'

            awk

            設(shè)置輸入域到域變量名:

            例:[root@localhost awk]# awk '{name=$1;color=$4;if(color~/Ye/) print name "\tok"}' data.f

            P.Bunnyaaa    ok

            釋:注意分號(hào)的使用,它分隔 awk命令。

            為變量賦值:

            例:[root@localhost awk]# awk '{if ($6 < "27") print $0}' data.f

            J.Lulu   06/99 48317 green  9  24 2678.

            J.Troll  07/99 4842  Brown-3 12 26 266666

            例:[root@localhost awk]#  awk 'BEGIN{shuzi="27 "} {if ($6 < shuzi) print $0}' data.f

            J.Lulu   06/99 48317 green  9  24 2678.

            J.Troll  07/99 4842  Brown-3 12 26 266666

            釋:通常在BEGIN部分賦值是很有益的,可以在awk表達(dá)式進(jìn)行改動(dòng)時(shí)減少很多麻煩。

            修改數(shù)值域取值:

            例:[root@localhost awk]# awk '{if ($1=="M.Tansley") $6=$6-1;print $1,$6,$7}' data.f

            M.Tansley 39 44.44

            J.Lulu 24 2678.

            P.Bunnyaaa 35 2658

            J.Troll 26 266666

            L.Tansleyaaa 30 44544

            釋:M.Tansley從原來的40下降到39。

            例:[root@localhost awk]# awk '{if ($1==$1) $6=$6-1;print $1,$6,$7}' data.f

            M.Tansley 39 44.44

            J.Lulu 23 2678.

            P.Bunnyaaa 34 2658

            J.Troll 25 266666

            L.Tansleyaaa 29 44544

            釋:所有數(shù)字都減一。

            修改文本域:

            例:[root@localhost awk]# awk '{if ($1=="P.Bunnyaaa") ($1="P.Bunnyaaa.abcaaa");print $1}' data.f

            M.Tansley

            J.Lulu

            P.Bunnyaaa.abcaaa

            J.Troll

            L.Tansleyaaa

            釋:記住字符串要使用雙秒號(hào)( " ")不要忘記分號(hào)(;) ,并用圓括號(hào)括起整個(gè)語法。

            只顯示修改記錄:

            例:[root@localhost awk]# awk '{if ($1=="M.Tansley") {$1="M.Tansley.abc";print $1}}' data.f

            M.Tansley.abc

            例:[root@localhost awk]# awk '{if ($1=="M.Tansley") {$1="M.Tansley.abc";print $0}}' data.f

            M.Tansley.abc 05/99 48311 Green 8 40 44.44

            釋:注意花括號(hào)的位置

            創(chuàng)建新的輸出域:

            例:[root@localhost awk]# awk 'BEGIN{print "name\t fenzhi"} {if ($5 < $6) {$8=$6-$5;print $1,$8}}' data.f

            name   fenzhi

            M.Tansley 32

            J.Lulu 15

            P.Bunnyaaa 23

            J.Troll 14

            L.Tansleyaaa 18

            釋:在輸出結(jié)果前打印一個(gè)頭,然后在比較數(shù)值,“$8=$6-$5”這是在為$8賦值。記住使用語法的格式。

            例:[root@localhost awk]# awk 'BEGIN{print "name \t shuzi"} {if ($5 < $6);diff=$6-$5;print $1,diff}' data.f

            name   shuzi

            M.Tansley 32

            J.Lulu 15

            P.Bunnyaaa 23

            J.Troll 14

            L.Tansleyaaa -90

            釋:也可以使用域變量名。

            文件長(zhǎng)度相加:

            例:[root@localhost awk]# ll -h |awk '/^[^d]/ {print $8"\t"$5} {tol+=$5} END{print "zongshu:" tol}'

            data.f  217

            data.f.bak    201

            zongshu:422

            釋:數(shù)值相加的總和有偏差,應(yīng)該是單位換算導(dǎo)致的結(jié)果有誤。具體后期查一下。

            替換(gsub):

            例:[root@localhost awk]# awk 'gsub (/Green/,"abcd") {print $0}' data.f

            M.Tansley 05/99 48311 abcd  8  40 44.44

            釋:整個(gè)記錄中替換一個(gè)字符串為另一個(gè),使用正則表達(dá)式格式, /目標(biāo)模式/,替換模式

            awk簡(jiǎn)單腳本:

            例:[root@localhost awk]# cat jiaoben

            #!/bin/awk -f

            #

            BEGIN{

            print "hello"

            print "chengjiruxia"

            print "===================================="

            }

            (tot+=$6)

            END{print "zongshu:" tot

            print "pingjunshu" tot/NR}

            釋:要給awk腳本加權(quán)限chmod u+x jiaoben ,不能這樣使用sh jiaoben data.f。

            釋:tot/NR是tot總數(shù)除以行數(shù)(NR)

            例:[root@localhost awk]# ./jiaoben data.f

            hello

            chengjiruxia

            ====================================

            M.Tansley 05/99 48311 Green  8  40 44.44

            J.Lulu   06/99 48317 green  9  24 2678.

            P.Bunnyaaa  02/99 48   Yellow  12 35 2658

            J.Troll  07/99 4842  Brown-3 12 26 266666

            L.Tansleyaaa 05/99 4712  Brown-2 120 30 44544

            zongshu:155

            pingjunshu31

            例:[root@localhost awk]# awk 'BEGIN{OFS=":"}{print $1,$3,$4}' digresult.txt

            news.sina.com.cn:111.12.251.212:111.12.251.203

            jupiter.sina.com.cn:111.12.251.217:111.12.251.212

            cmnetnews.sina.com.cn:111.12.251.219:111.12.251.217

            us.sina.com.cn:111.12.251.212:111.12.251.203

            www.sina.com:111.12.251.212:111.12.251.203

            釋:將打印的結(jié)果已冒號(hào)分隔又叫輸出分隔符

            另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

            分享標(biāo)題:shell腳本三劍客之a(chǎn)wk命令-創(chuàng)新互聯(lián)
            網(wǎng)站路徑:http://www.jbt999.com/article30/cddgpo.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站排名標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計(jì)靜態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司

            廣告

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

            網(wǎng)站優(yōu)化排名

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 乱伦激情视频91 | 亚洲精品一区二区三区在线观看 | 成人毛片18女人毛片免费看dvd | 人妻在线中文字幕蜜桃 | 一道本二区三区 |