1.內置變量對照表
內置變量 | 含義 | 全稱 |
---|---|---|
$0 | 整行內容 | |
$1-$n | 當前行的1-n個字段 | |
NF | 當前行的字段個數,就是有多少列 | Number Filed |
NR | 當前行的行號,從1開始進行計數 | Number Row |
FNR | 多文件處理,每個文件的行號單獨計數,都是從0開始的 | File Number Row |
FS | 輸入字段分隔符號,不指定默認已空格和table鍵分割 | File Separator |
RS | 輸入行分隔符號,默認\n換行 | Row Separator |
OFS | 輸出字段分隔符號,默認爲空格 | Output Filed Separator |
ORS | 輸出行分隔符,默認\n換行 | Output Row Separator |
FILENAME | 當前輸入文件的名字 | |
ARGC | 命令行參數個數 | |
ARGV | 命令行參數數組 |
2.變量詳解
2.1.$0
創建a.txt 文件
python java go
kangkang jack jerry
phone biao computer
awk '{print $0}' a.txt
# 結果:
# python java go
# kangkang jack jerry
# phone biao computer
$0作用就是打印本行內容,因爲pattern 爲空,就是表示對整個文本進行處理
2.2.$1-n
創建a.txt 文件
python java go
kangkang jack jerry
phone biao computer
awk '{print $1}' a.txt
# 打印結果:
# python
# kangkang
# phone
系統默認空格和table鍵爲分隔符號,所以就是打印第一個字段
2.3.NF
創建a.txt 文件
python java go
kangkang jack jerry
phone biao computer
awk '{print NF}' a.txt
# 打印結果
# 3
# 3
# 3
每行有3個字段
2.4.NR
awk '{print NR}' a.txt
# 打印結果
# 1
# 2
# 3
awk '{print NR}' a.txt b.txt
# 打印結果:
# 1
# 2
# 3
# 4
# 5
# 6
當只有又給文件,就是打印有多少行,當有多個文件的時候,就會在第二個文件,接上第一個文件統計的行數進行疊加
2.5.FNR
awk '{print FNR}' a.txt b.txt
# 打印結果:
# 1 # a.txt 有三行
# 2
# 3
# 1 # b.txt 有三行
# 2
# 3
注意和NR區別
2.6.FS
創建b.txt文件
python|java|go
kangkang|jack|jerry
phone|biao|computer
awk 'BEGIN{FS="|"}{print $2}' b.txt
#結果:
# java
# jack
# biao
就是進行分隔
2.7.RS
創建c.txt文件
jave|python--kangkang|michel--phone|computer
awk 'BEGIN{NS="--"}{print$0}' c.txt
# 打印結果
# jave|python
# kangkang|michel
# phone|computer
2.8.ORS
使用b.txt文件
python|java|go
kangkang|jack|jerry
phone|biao|computer
awk 'BEGIN{FS="|";ORS="@@"}{print $1,$2}' b.txt
# 輸出結果:
# python java@@kangkang jack@@phone biao@@
awk 'BEGIN{FS="|";ORS="@@"}{print $1$2}' b.txt # 把中間的,去掉
# 輸出結果
# pythonjava@@kangkangjack@@phonebiao@@
就是把要打印的數據,使用指定的符號進行連接,然後打印出來
2.9.OFS
使用b.txt文件
python|java|go
kangkang|jack|jerry
phone|biao|computer
awk 'BEGIN{FS="|";ORS="@@";OFS="***"}{print $1,$2}' b.txt
# 打印結果
## python***java@@kangkang***jack@@phone***biao@@
就是重新指定一個新的分隔符號
2.10.FILENME
awk '{print FILENAME}' b.txt
# 結果:
# b.txt
# b.txt
# b.txt
2.11.ARGC
awk '{print ARGC}' b.txt
# 說明; 兩個變量 AWK b.txt
# 結果
# 2
# 2
# 2