真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux中awk的基本格式是什么

這篇文章主要為大家展示了“l(fā)inux中awk的基本格式是什么”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“l(fā)inux中awk的基本格式是什么”這篇文章吧。

創(chuàng)新互聯(lián)建站成都企業(yè)網(wǎng)站建設服務,提供網(wǎng)站建設、成都做網(wǎng)站網(wǎng)站開發(fā),網(wǎng)站定制,建網(wǎng)站,網(wǎng)站搭建,網(wǎng)站設計,成都響應式網(wǎng)站建設公司,網(wǎng)頁設計師打造企業(yè)風格網(wǎng)站,提供周到的售前咨詢和貼心的售后服務。歡迎咨詢做網(wǎng)站需要多少錢:18982081108

介紹了 awk 命令的基本格式:

$ awk [選項] '模式 {動作}' 輸入文件

awk 是一個命令,后面要接選項 (比如用 -F 來定義字段分隔符)。想讓 awk 執(zhí)行的部分需要寫在兩個單引號之間,至少在終端中需要這么做。在 awk 命令中,為了進一步強調你想要執(zhí)行的部分,可以用 -e 選項來突出顯示(但這不是必須的):

$ awk -F, -e '{print $2;}' colours.txtyellowbluegreen[...]

記錄和字段

awk 將輸入數(shù)據(jù)視為一系列記錄,通常是按行分割的。換句話說,awk 將文本中的每一行視作一個記錄。每一記錄包含多個字段。一個字段由字段分隔符分隔開來,字段是記錄的一部分。

默認情況下,awk 將各種空白符,如空格、制表符、換行符等視為分隔符。值得注意的是,在 awk 中,多個空格將被視為一個分隔符。所以下面這行文本有兩個字段:

raspberry red

這行也是:

tuxedo                  black

其他分隔符,在程序中不是這么處理的。假設字段分隔符是逗號,如下所示的記錄,就有三個字段。其中一個字段可能會是 0 個字節(jié)(假設這一字段中不包含隱藏字符)

a,,b

awk 程序

awk 命令的程序部分是由一系列規(guī)則組成的。通常來說,程序中每個規(guī)則占一行(盡管這不是必須的)。每個規(guī)則由一個模式,或一個或多個動作組成:

模式 { 動作 }

在一個規(guī)則中,你可以通過定義模式,來確定動作是否會在記錄中執(zhí)行。模式可以是簡單的比較條件、正則表達式,甚至兩者結合等等。

這個例子中,程序只會顯示包含單詞 “raspberry” 的記錄:

$ awk '/raspberry/ { print $0 }' colours.txtraspberry red 99

如果沒有文本符合模式,該動作將會應用到所有記錄上。

并且,在一條規(guī)則只包含模式時,相當于對整個記錄執(zhí)行 { print },全部打印出來。

Awk 程序本質上是數(shù)據(jù)驅動的,命令執(zhí)行結果取決于數(shù)據(jù)。所以,與其他編程語言中的程序相比,它還是有些區(qū)別的。

NF 變量

每個字段都有指定變量,但針對字段和記錄,也存在一些特殊變量。NF 變量,能存儲 awk 在當前記錄中找到的字段數(shù)量。其內容可在屏幕上顯示,也可用于測試。下面例子中的數(shù)據(jù),來自上篇文章文本:

$ awk '{ print $0 " (" NF ")" }' colours.txtname       color  amount (3)apple      red    4 (3)banana     yellow 6 (3)[...]

awkprint 函數(shù)會接受一系列參數(shù)(可以是變量或者字符串),并將它們拼接起來。這就是為什么在這個例子里,每行結尾處,awk 會以一個被括號括起來的整數(shù)表示字段數(shù)量。

NR 變量

另外,除了統(tǒng)計每個記錄中的字段數(shù),awk 也統(tǒng)計輸入記錄數(shù)。記錄數(shù)被存儲在變量 NR 中,它的使用方法和其他變量沒有任何區(qū)別。例如,為了在每一行開頭顯示行號:

$ awk '{ print NR ": " $0 }' colours.txt1: name       color  amount2: apple      red    43: banana     yellow 64: raspberry  red    35: grape      purple 10[...]

注意,寫這個命令時可以不在 print 后的多個參數(shù)間添加空格,盡管這樣會降低可讀性:

$ awk '{print NR": "$0}' colours.txt

printf() 函數(shù)

為了讓輸出結果時格式更靈活,你可以使用 awkprintf() 函數(shù)。 它與 C、Lua、Bash 和其他語言中的 printf 相類似。它也接受以逗號分隔的格式參數(shù)。參數(shù)列表需要寫在括號里。

$ printf 格式, 項目1, 項目2, ...

格式這一參數(shù)(也叫格式符)定義了其他參數(shù)如何顯示。這一功能是用格式修飾符實現(xiàn)的。%s 輸出字符,%d 輸出十進制數(shù)字。下面的 printf 語句,會在括號內顯示字段數(shù)量:

$ awk 'printf "%s (%d)\n",$0,NF}' colours.txtname       color  amount (3)raspberry  red    4 (3)banana     yellow 6 (3)[...]

在這個例子里,%s (%d) 確定了每一行的輸出格式,$0,NF 定義了插入 %s%d 位置的數(shù)據(jù)。注意,和 print 函數(shù)不同,在沒有明確指令時,輸出不會轉到下一行。出現(xiàn)轉義字符 \n 時才會換行。

Awk 腳本編程

這篇文章中出現(xiàn)的所有 awk 代碼,都在 Bash 終端中執(zhí)行過。面對更復雜的程序,將命令放在文件(腳本)中會更容易。-f FILE 選項(不要和 -F 弄混了,那個選項用于字段分隔符),可用于指明包含可執(zhí)行程序的文件。

舉個例子,下面是一個簡單的 awk 腳本。創(chuàng)建一個名為 example1.awk 的文件,包含以下內容:

/^a/ {print "A: " $0}/^b/ {print "B: " $0}

如果一個文件包含 awk 程序,那么在給文件命名時,最好寫上 .awk 的擴展名。 這樣命名不是強制的,但這么做,會給文件管理器、編輯器(和你)一個關于文件內容的很有用的提示。

執(zhí)行這一腳本:

$ awk -f example1.awk colours.txtA: raspberry  red    4B: banana     yellow 6A: apple      green  8

一個包含 awk 命令的文件,在最開頭一行加上釋伴 #!,就能變成可執(zhí)行腳本。創(chuàng)建一個名為 example2.awk 的文件,包含以下內容:

#!/usr/bin/awk -f## 除了第一行,在其他行前顯示行號# NR > 1 {    printf "%d: %s\n",NR,$0}

可以說,腳本中只有一行,大多數(shù)情況下沒什么用。但在某些情況下,執(zhí)行一個腳本,比記住,然后打一條命令要容易的多。一個腳本文件,也提供了一個記錄命令具體作用的好機會。以 # 號開頭的行是注釋,awk 會忽略它們。

給文件可執(zhí)行權限:

$ chmod u+x example2.awk

執(zhí)行腳本:

$ ./example2.awk colours.txt2: apple      red    42: banana     yellow 64: raspberry red    35: grape      purple 10[...]

awk 命令放在腳本文件中,有一個好處就是,修改和格式化輸出會更容易。在終端中,如果能用一行執(zhí)行多條 awk 命令,那么輸入多行,才能達到同樣效果,就顯得有些多余了。

以上是“l(fā)inux中awk的基本格式是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


文章標題:linux中awk的基本格式是什么
鏈接分享:http://weahome.cn/article/gopjjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部