前言
Awk学习笔记
基本语法
选项
指定列分隔符
1
| awk -F "列分隔符" 优先级{处理方式} 文件
|
指定变量及其初始值
1
| awk -v "变量名=变量值" 优先级{处理方式} 文件
|
优先级
BEGIN
:标识处理数据流之前要做的事 PROGRAMME
:标识处理数据流做的事 END
:标识处理数据流之后要做的事
1
| awk 选项 BEGIN{处理数据流之前}{处理数据流}END(处理数据流之后)
|
输出语句
输出指定列(字段)
$0
:打印每一行的所有列 $N
:打印每一行的第N列 $NF
:打印每一行的最后列
输出指定行(记录)
N
:指定行
指定列分隔符
- 列分隔符默认为空格或制表符
- 可以使用
-F
修改列分隔符
1 2 3
| awk -F "分隔符" 'NR==N{print $0}'
awk -F分隔符 'NR==N{print $0}'
|
输出字符串
1
| awk '{print $1 "字符串" $2}' <file>
|
分隔多组数据
- 使用
,
分隔多组数据,输出的结果会用一个空格进行分隔
- 等价于添加空格字符串
1 2 3
| awk '{print $1,$2}' <file>
awk '{print $1" "$2}' <file>
|
变量的定义和使用
1
| awk '{变量名=变量值;print 变量名}' <file>
|
数组的的定义和使用
1
| awk '{数组名[下标]=值;print 数组名[下标]}' <file>
|
运算
赋值运算
比较运算
>
、<
、==
、>=
、<=
、!=
结果为真返回1,结果为假返回0
数学运算
逻辑运算
模糊匹配运算
1 2
| awk '{变量~比较的数据}' <file> awk '{变量!~比较的数据}' <file>
|
环境变量
指定列宽
1
| awk 'BEGIN{FIELDWIDTHS="第一列列宽 第二列列宽 ..."}' <file>
|
指定源数据的列分隔符
1
| awk 'BEGIN{FS="列分隔符"}' <file>
|
指定输出后的列分隔符
1
| awk 'BEGIN{OFS="列分隔符"}' <file>
|
指定源数据的行分隔符
1
| awk 'BEGIN{RS="行分隔符"}' <file>
|
指定输出后的行分隔符
1
| awk 'BEGIN{ORS="行分隔符"}' <file>
|
流程语句
分支语句
单分支
1 2 3 4
| awk '{ if (判断条件) 结果为真执行的语句 }' <file>
|
1 2
| awk '{ if (判断条件)结果为真执行的语句}' <file>
|
双分支
1 2 3 4 5 6
| awk '{ if (判断条件) 结果为真执行的语句 else 结果为假执行的语句 }' <file>
|
1 2
| awk '{ if (判断条件)结果为真执行的语句;else 结果为假执行的语句}' <file>
|
循环语句
for循环
1 2 3 4
| awk '{ for (i=0;i<循环次数;i++) 循环执行的语句 }' <file>
|
1 2
| awk '{ for (i=0;i<循环次数;i++)循环执行的语句}' <file>
|
while循环
1 2 3 4
| awk '{ while (循环条件) 循环执行的语句 }' <file>
|
1 2
| awk '{ while (循环条件)循环执行的语句}' <file>
|
do...while循环
1 2 3 4 5
| awk '{ do{ 循环执行的语句 }while (循环条件) }' <file>
|
1
| awk '{do{循环执行的语句}while(循环条件)}' <file>
|
循环控制
break跳出循环
1 2 3 4 5 6 7
| awk '{ while (循环条件) 循环执行的语句 if (判断条件) 结果为真执行的语句 break }' <file>
|
完成
参考文献
哔哩哔哩——Python社区