awk指定分隔符_Linux 命令之 awk 用法

概述

一个强大的文本分析工具命令,把文件逐行的读入然后执行相应的命令,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理,通常用来格式化文本文件中的信息.主要涉及的概念有记录(行)、域(列)、域分隔符

2f442abeaf45f349afdb0b21f2181e8c.png

1.BEGIN{}模块

在awk处理任何输入文件之前执行

2.END{}模块

在整个输入文件处理完成后被执行

命令格式

awk '{pattern + action}' file1,file2...

pattern 表示 AWK 在数据中查找的内容

action是在找到匹配内容时所执行的一系列命令

内置变量

$n 第几列

$0 代表所有列

$NF 表示最后一列

NF 当前记录中的字段数

NR 当前记录数

FNR 同NR,但相对于当前文件

FILENAME 当前文件名

FS 输入域分隔符(默认是任何空格)

OFS 输出域分隔符(默认值是一个空格)

ORS 输出记录分隔符(默认值是一个换行符)

命令示例

1. 打印行号,每行列数,所有列

cat a.c |awk -F' ' '{print FNR,NF,$0}'

2. 打印以tom或kevin开头的行

awk '/^(tom|kevin)/ {print $0}' a.c

3. 打印第一列是tom的行

awk '{if($1=="tom"){print $0}}' a.c

4. 三元条件判断

awk '{print ($1 > 5 ? "ok "$1: "error"$1)}' a.c

5. 查看指定某些目录内文件总字节数

ls -l $(find /etc/ -maxdepth 3) |awk 'BEGIN {size=0;} {if($5!=4096){size=size+$5;}} END{print "[end]size is


版权声明:本文为weixin_42470362原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。