33、shell編程—awk內置變量

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章