首頁 >系統教程 >Linux >學習在Linux中使用AWK內建變量

學習在Linux中使用AWK內建變量

PHPz
PHPz轉載
2024-01-06 16:22:06536瀏覽
導讀 我們將逐漸揭開 awk 功能的神秘面紗,在本節中,我們將介紹 awk 內建built-in變數的概念。你可以在 awk 中使用兩種類型的變量,它們是:使用者自訂user-defined變數和內建變數。

linux下 awk内置变量使用介绍

#我們將逐漸揭開 awk 功能的神秘面紗,在本節中,我們將介紹 awk 內建built-in變數的概念。你可以在 awk 中使用兩種類型的變量,它們是:使用者自訂user-defined變數和內建變數。 awk 內建變數已經有預先定義的值了,但我們也可以謹慎地修改這些值.

awk 內建變數包括:
  • FILENAME : 目前輸入檔名
  • NR : 目前輸入行編號(是指輸入行 1,2,3…等)
  • NF : 目前輸入行的欄位編號
  • OFS : 輸出欄位分隔符號
  • FS : 輸入欄位分隔符號
  • ORS : 輸出記錄分隔符號
  • RS : 輸入記錄分隔符號
FILENAME :

讓我們繼續示範一些使用上述awk 內建變數的方法,想要讀取目前輸入檔案的名稱,你可以使用FILENAME 內建變量,如下:$ awk ' { print FILENAME } ' ~/domains. txt

linux下 awk内置变量使用介绍

#你會看到,每一行都會對應輸出一次檔名,那是你使用 FILENAME 內建變數時 awk 預設的行為。我們可以使用 NR 來統計一個輸入檔的行數(記錄),請謹記:它也會計算空行,正如我們將要在下面的例子中看到的那樣。 輸出檔案內容 當我們使用 cat 指令檢視檔案 domains.txt 時,會發現它有 14 行文字和 2 個空白行:$ cat ~/domains.txt

linux下 awk内置变量使用介绍

#awk 統計行數:
$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt

linux下 awk内置变量使用介绍

#awk 統計檔案中的字段數:
$ awk '{ "Record:",NR,"has",NF,"fields" ; }' ~/names.txt

 linux下 awk内置变量使用介绍

FS 內建變數:

你也可以使用 FS 內建變數來指定一個輸入檔分隔符,它會定義 awk 如何將輸入行分割成欄位。 FS 預設值為“空格”和“製表符”,但我們也能將 FS 值修改為任何字元來讓 awk 根據情況切分輸入行。有兩種方法可以達到目的:第一種方法是使用 FS 內建變數;第二種方法是使用 awk 的 -F 選項。來看Linux 系統上的/etc/passwd 文件,該文件中的各字段是使用冒號(:) 分隔的,因此,當我們想要過濾出某些字段時,可以將冒號(:) 指定為新的輸入欄位分隔符, awk 過濾密碼檔案中的各欄位. 我們可以使用-F 選項,如下:$ awk -F':' '{ print $1, $4 ;}' /etc/passwd

linux下 awk内置变量使用介绍

##此外,我們也可以利用 FS 內置變量,如下:$ awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd

linux下 awk内置变量使用介绍

#使用 OFS 內建變數:

使用OFS 內建變數來指定一個用於輸出的欄位分隔符,它會定義如何使用指定的字元分隔輸出字 段 使用awk輸出的分隔符​​號:   $ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

linux下 awk内置变量使用介绍

#在本節中,我們已經學習了使用含有預定義值的 awk 內建變數的理念。但我們也能夠修改這些值,雖然不建議這樣做,除非你明白自己在做什麼,並且充分理解(這些變數值)。

此後,我們將繼續學習如何在 awk 命令操作中使用 shell 變量,所以,請繼續關注我們。

以上是學習在Linux中使用AWK內建變量的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:linuxprobe.com。如有侵權,請聯絡admin@php.cn刪除