shell编程_awk
awk擅长处理的是一行数据的列。
awk会对数据流中的每一行文本执行一遍程序脚本。
awk命令格式
awk options program file
awk的内置变量
| 内置变量名称 | 内置变量含义 |
| NF | 字段的个数 |
| NR | 行号,从1开始计数 |
从命令行读取程序脚本
1 awk的程序脚本必须放在{}中定义。
2 {}必须在单引号中。
如: awk '{print "Hello World}'
awk中的print命令
它会将文本打印到STDOUT中。
awk '{print "Hello world"}' 这里,程序不会有任何输出,原因是没有指定文件名。awk会从STDIN中接收数据。
使用数据字段变量(内置变量$0-$n)
awk会自动给每行中的每个数据元素分配一个变量。
$0 代表整个文本行。
$1 代表文本行中的第1个数据字段。
$2 代表文本行中的第2个数据字段。
$n 代表文本行中的第n个数据字段。
每个数据字段在文本行中都是通过字段分割符来进行划分的。
默认的字段分割符是空格或制表符。
设置字段分割符可以用参数 -F指定。
如 awk -F: '{print $1}' /etc/passwd
在程序脚本中使用多个命令
例:
echo "My name is Rich" | awk '{$4="Christine": print $0}'
My name is Christine
在处理数据前执行脚本
BEGIN关键字,它会强制gwk在读取数据前指向BEGIN关键字后指定的程序脚本。
结束awk程序,使用CTRL+D。CTRL+D会产生一个EOF(End-of-File)符号。
案例
awk -F "|" '{print NF}'
-F "|" 设置分隔符号。
内置变量NF表示,每一行分隔的字段的个数。
这句话的整体意思为,使用竖杠拆分源数据,将每一行中分割的数据字段个数打印出来。
posted on 2021-02-24 22:38 XiaoXiaoli 阅读(88) 评论(0) 收藏 举报
浙公网安备 33010602011771号