亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell 之 AWK(八)

發布時間:2020-07-07 17:26:23 來源:網絡 閱讀:1688 作者:上帝之子521 欄目:開發技術

        今天我們來看看 AWK,那么 AWK 是什么呢?AWK 是一個優良的文本處理工具,Linux 及 Unix 環境中現有的功能最強大的數據處理引擎之一。它的分類有 NAWK GAWK AWK。AWK 經過改進生成的新的版本 GAWK,NAWK,現在默認linux系統下日常使用的是 GAWK。

        下來我們來看看 AWK 的執行流程,如下圖所示

shell 之 AWK(八)

        我們看到它也是行處理模式,每讀取一行便讀取到剝離體中。下來我們來看看 awk 命令的格式:awk -Fs 'BEGIN{ } /pattern/ {action} END{ }' input-file ;-F 是指定分隔符。

shell 之 AWK(八)

        我們看到以 , 結尾的,打印出三個段。

        下面我們來看看 awk 中的內置變量:

        a> awk 分隔符 FS:

            awk 'BEGIN { FS=","; \
            print "-------------\nName\tTitle\n-------------" } \
            { print $2,"\t",$3; } \
            END {print "-------------"}' employee.txt

shell 之 AWK(八)

        我們以 \t 的格式打印出 Name 和 Title。

        b> 指定多個分隔符,格式:awk 'BEGIN {FS="[,:%]"} {action}' input-file

shell 之 AWK(八)

        我們看到我們以第 2 段和第 3 段的格式輸出信息。

        c> 輸出分隔符 OFS,格式:awk -F ',' '{print $2, ":", $3}' employee.txt 等同于 awk -F ',' 'BEGIN { OFS=":" } { print $2, $3 }' employee.txt 

shell 之 AWK(八)

        d> 指定分隔符并換行 RS,指定分割字符,將一行分成多行。

        輸入示例如下

shell 之 AWK(八)

shell 之 AWK(八)

        e> 輸出分隔符 ORS

shell 之 AWK(八)

        下來我們來看看AWK 中的 print 和 printf,那么它們有何區別呢?在 print 中不需要加引號,字符串需要加引號。示例:date | awk '{print Month: " $2 "\nYear:",$1} ' ;printf 與 C 語言基本一致,轉移字符:- %c 字符、- %s 字符串、- %d 十進制整數、- %f 浮點型

shell 之 AWK(八)

        我們看到 print 和 printf 的區別,僅僅只是需要加引號的區別,printf 和 C 語言中的打印方式是一樣的。我們來看看一個 awk 中的內置變量 OFMT,它的作用是干什么嘞?它是控制輸出的,示例:date | awk '{OFMT="%.2f"; print 1.3456, 3.45}'

shell 之 AWK(八)

        我們接下來看看幾個實例應用:

        1、將以下字符串以:分隔,分成多行

        101,John Doe:102,Jason Smith:103,Raj Reddy:104,Anand Ram:105,Jane Miller

shell 之 AWK(八)

        2、windows 與 Linux 文件格式轉換

        命令:awk 'BEGIN{RS="\n";ORS="\r\n"} {print $0}' README.txt > README.WIN

shell 之 AWK(八)

        我們看到在 Windows 下打開 README.txt 格式是不對的,都在一行。但是經過 awk 命令的轉換后,它就符合了 Windows 下的文本格式,將 Linux 下的換行符 \r\n 轉換成 Windows 下的 \n 換行符的格式。下來我們再來看看 awk 中的內置變量,掌握更多的內置變量將有利于我們更高效的進行開發。還是將以下內容放入我們的 employee.tx 文本中

101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

        我們來看看一個內置變量 NR,它的作用是記錄處理的行號。示例:awk '/Jason/ { print NR, $0}' employee.txt

shell 之 AWK(八)

        那么我們多復制幾個文本呢,看看結果是怎樣的

shell 之 AWK(八)

         我們看到記錄到的行號是  2 7 12,那么這是為什么呢?NR 變量不會重置計數器,這便是我們要強調的一個注意事項。

         FILENAME 內置變量,它的作用是同時處理多個文件時,用來標志當前處理的文件名 。注意:1) 處理文本時顯示文件;2) 從管道輸入流接收內容時顯示  "-"

shell 之 AWK(八)

        我們看到在輸出時加字符串必要要用雙引號括起來,同時我們也可用 NR 來進行行號的輸出。在管道后接收內容時會顯示 "-"。

        接下來我們來看看 FNR 內置變量,它跟NR 內置變量類似,但會重置計數器。
shell 之 AWK(八)

        我們看到三個打印的都是第 2 行。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贺州市| 永定县| 托克逊县| 会昌县| 漯河市| 南澳县| 佛冈县| 闸北区| 扎赉特旗| 阿拉善右旗| 高邑县| 枣强县| 两当县| 微山县| 仁布县| 安图县| 渑池县| 白水县| 屏南县| 比如县| 永清县| 庆元县| 治县。| 凤翔县| 本溪| 景东| 青海省| 山丹县| 荥经县| 弥勒县| 巴塘县| 滁州市| 双鸭山市| 吉木萨尔县| 林口县| 铁岭市| 介休市| 西乡县| 盱眙县| 斗六市| 商河县|