欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

33、shell编程—awk内置变量

程序员文章站 2022-07-10 10:27:15
...

1.内置变量对照表

内置变量 含义
$0 整行内容
11-n 当前行的1-n个字段
NF 当前行的字段个数,就是有多少列
NR 当前行的行号,从1开始进行计数
FNR 多文件处理,每个文件的行号单独计数,都是从0开始的
FS 输入字段分隔符号,不指定默认已空格和table键分割
RS 输入行分隔符号,默认\n换行
OFS 输出字段分隔符号,默认为空格
ORS 输出行分隔符,默认\n换行
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 [email protected]@kangkang [email protected]@phone [email protected]@
awk 'BEGIN{FS="|";ORS="@@"}{print $1$2}' b.txt # 把中间的,去掉
# 输出结果
# [email protected]@[email protected]@[email protected]@

就是把要打印的数据,使用指定的符号进行连接,然后打印出来

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***[email protected]@kangkang***[email protected]@phone***[email protected]@

就是重新指定一个新的分隔符号

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
相关标签: shell linux awk