33、shell编程—awk内置变量
程序员文章站
2022-07-10 10:27:15
...
文章目录
1.内置变量对照表
内置变量 | 含义 |
---|---|
$0 | 整行内容 |
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中case的讲解及实例