1. awk命令简介
awk是专门为文本处理设计的编.程语言,也是一个应用程序,几乎所有Linux发行版本都自带这个程序。我们通常用它进行数据扫描、过滤、统计汇总工作。
- awk是一种强大的编辑工具,比较倾向于一行当中分成数个字段来处理,因为awk相当适合小型的文本数据。
- awk 比较倾向于将一行分成多个字段然后再进行处理,且默认情况下字段的分隔符为空格或 tab 键。awk 执行结果可以通过 print 的功能将字段数据打印显示。
awk工作原理
- 逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
- 在使用awk命令的过程中,可以使用逻辑操作符“&&”表示“与”、“||”表示“或”、“!”表示“非”;还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。
2. awk命令格式
它与grep、sed命令一样都是以行为单位读取文本的,默认以空格或Tab键为分隔符,将分割所得的各个字段保存到内建变量中供后续使用。
命令格式如下:
awk "[选项1] {操作1;操作2} [选项2] {操作3;操作4} ..." 文件名
awk -f 脚本文件 文件名
awk语法由一系列选项和操作组成,在花括号内可以有多个操作,在多个操作之间是有分号分隔,在多个选项和操作之间可以有若干空格,也可以没有
选项说明:
-F fs or --field-separator fs:相当于内建变量“FS”,指定分割符为fs,默认为空格或Tab制表符;
-f scripfile or --file scriptfile:从文件中读取awk指令,用来代替命令行中输入的命令;
-v var=value or --asign var=value:设置一个变量并且附上初值。
3. awk常见的内置变量和运算符
常见的内置变量如下:
内置变量 | 说明 |
---|---|
$0 | 当前记录(作为单个变量),即当前处理的行的字段个数 |
FS | 列分割符指定每行文本的字段分隔符,默认为空格或制表位。也可用选项"-F"表示 |
NF | 当前处理行的字段个数,即列数,从1开始 |
NR | 当前记录中的行数,从1开始 |
$n | 当前处理行的第n个字段(第n列) |
RS | 行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’ |
FILENAME | 被处理的文件名 |
FNR | 当awk处理多个文件时,分别对每个文件的行数进行计数 |
ORS | 更改行换行符 |
OFS | 更改列分割符 |
ARGV | 表示是一个数组,这个数组中保存的是命令行所给定的参数 |
ARGC | 表示参数的数量,也可以理解为ARGV数组的长度 |
运算符文章来源:https://www.toymoban.com/news/detail-684627.html
运算符 | 描述 |
---|---|
= += -= *= /= %= ^= **= | 赋值 |
?: | C语言中的三目运算符 |
< <= > >= != == | 关系运算 |
+ - * / % | 算术运算 |
^ ** | 求幂 |
++ -- | 自增和自减 |
||和&& | 逻辑或/与 |
$ | 字段引用 |
in | 数组成员 |
4. awk常见用法汇总
4.1 基础用法
示例,编写一个test.txt文本文章来源地址https://www.toymoban.com/news/detail-684627.html
root@ubuntu:/home/zgx/Desktop
到了这里,关于shell脚本 之 awk详解(数据筛选)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!