91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

满洲里市| 潢川县| 英吉沙县| 黑山县| 南昌县| 永城市| 元谋县| 岳池县| 璧山县| 新田县| 井冈山市| 颍上县| 宜兰县| 沐川县| 自贡市| 拜泉县| 宜兰县| 政和县| 平罗县| 钟祥市| 神木县| 南阳市| 剑川县| 新绛县| 汝州市| 吉隆县| 白沙| 龙南县| 柳州市| 林周县| 城步| 称多县| 凉山| 石林| 岫岩| 湄潭县| 防城港市| 获嘉县| 勃利县| 玉田县| 澎湖县|