一、awk工作原理
二、awk的用法
awk [option] ... ‘program‘ FILE ...
1、program语句必须使用单引号!
2、多条program语句使用用大括号包含起来,可以并列,可以嵌套
三、awk的常用参数
-F #指定分隔符
示例:awk -F: ‘{print $1}‘ /etc/passwd #输出/etc/passwd/文件中以:为分隔符的第一列
-v #因为awk是一种语言编译器,能自己定义变量,同时也有自己的内置变量(与shell中的环 变量类似),所以要手动指定变量参数。
示例:awk -v a="a+b" ‘{print a}‘ test.txt #给a复制,打印a这个变量(在awk中调用变量不需要 加$符)
四、awk的语法格式
1.print #默认输出
在awk中没有保存的命令,我们可以关联别的命令来保存awk的结果
示例:awk ‘{a="a+b";print a}‘ test.txt | tee a.txt
2.printf #实现格式化输出
示例:printf "%s是%d班学习最棒的",变量1,变量2
(1)格式符
%s 字符串
%d %i 数值
%e %E 科学计算数值
%c ACSii码值
%f 浮点数
%u 无符号整数
%% 逃逸符 只显示 % 自己
(2)修饰符
默认为右对齐
- 代表左对齐
%5.4f #5代表所占的位数,4代表所取的小数位
3.变量
变量分为内置变量和自定义变量
内置变量是awk语言所默认支持的变量
变量:
FS #定义输入分割符的变量
OFS #定义输出分隔符的变量
NF #定义行分隔以后的参数个数($NF 分隔以后最后的一列变量)
示例:awk -v FS=":" ‘/\/bash$/{print $1,$NF}‘ /etc/passwd
NR 定义文件的行数,定义多个文件的文件的,行号叠加
FNR 文件只计算自己的行号
示例:awk ‘{print NR}‘ /etc/fstab /etc/passwd
awk ‘{print FNR}‘ /etc/fstab /etc/passwd
FILENAME 存储文件的名字
示例:awk ‘{print FILENAME}‘ /etc/passwd #把文件名打印N次,N文件的行数
BEGIN{语句} 只在行循环开始时,执行一次;
示例:awk ‘BEGIN{print FILENAME}‘ /etc/passwd
原文地址:https://www.cnblogs.com/hmm01031007/p/11402609.html