2

【笔记】Awk学习笔记

 1 year ago
source link: https://feiju12138.github.io/2022/07/02/Awk%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【笔记】Awk学习笔记

2022-07-022022-07-06

4

Awk学习笔记

awk 选项 优先级{处理方式} 文件

指定列分隔符

  • 默认为空格符
awk -F "列分隔符" 优先级{处理方式} 文件

指定变量及其初始值

awk -v "变量名=变量值" 优先级{处理方式} 文件

BEGIN:标识处理数据流之前要做的事
PROGRAMME:标识处理数据流做的事
END:标识处理数据流之后要做的事

awk 选项 BEGIN{处理数据流之前}{处理数据流}END(处理数据流之后)

输出指定列(字段)

$0:打印每一行的所有列
$N:打印每一行的第N列
$NF:打印每一行的最后列

awk '{print $0}' <file>

输出指定行(记录)

N:指定行

awk 'NR==N{print $0}'

指定列分隔符

  • 列分隔符默认为空格或制表符
  • 可以使用-F修改列分隔符
awk -F "分隔符" 'NR==N{print $0}'

awk -F分隔符 'NR==N{print $0}'

输出字符串

  • 在输出语句中添加字符串
awk '{print $1 "字符串" $2}' <file>

分隔多组数据

  • 使用,分隔多组数据,输出的结果会用一个空格进行分隔
  • 等价于添加空格字符串
awk '{print $1,$2}' <file>

awk '{print $1" "$2}' <file>

变量的定义和使用

awk '{变量名=变量值;print 变量名}' <file>

数组的的定义和使用

awk '{数组名[下标]=值;print 数组名[下标]}' <file>
  • =
  • ><==>=<=!=

  • 结果为真返回1,结果为假返回0

  • +-*/%**++--
  • &&||

模糊匹配运算

  • ~!~
awk '{变量~比较的数据}' <file>
awk '{变量!~比较的数据}' <file>
  • 在处理数据之前的环境变量配置
awk 'BEGIN{FIELDWIDTHS="第一列列宽 第二列列宽 ..."}' <file>

指定源数据的列分隔符

  • 默认为空格符
awk 'BEGIN{FS="列分隔符"}' <file>

指定输出后的列分隔符

awk 'BEGIN{OFS="列分隔符"}' <file>

指定源数据的行分隔符

  • 默认为换行符
awk 'BEGIN{RS="行分隔符"}' <file>

指定输出后的行分隔符

awk 'BEGIN{ORS="行分隔符"}' <file>
awk '{
if (判断条件)
结果为真执行的语句
}' <file>
awk '{
if (判断条件)结果为真执行的语句}' <file>
awk '{
if (判断条件)
结果为真执行的语句
else
结果为假执行的语句
}' <file>
awk '{
if (判断条件)结果为真执行的语句;else 结果为假执行的语句}' <file>

for循环

awk '{
for (i=0;i<循环次数;i++)
循环执行的语句
}' <file>
awk '{
for (i=0;i<循环次数;i++)循环执行的语句}' <file>

while循环

awk '{
while (循环条件)
循环执行的语句
}' <file>
awk '{
while (循环条件)循环执行的语句}' <file>

do…while循环

awk '{
do{
循环执行的语句
}while (循环条件)
}' <file>
awk '{do{循环执行的语句}while(循环条件)}' <file>

break跳出循环

awk '{
while (循环条件)
循环执行的语句
if (判断条件)
结果为真执行的语句
break
}' <file>

哔哩哔哩——Python社区


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK