linux 的awk命令

简介: linux 的awk命令

1.什么是AWK

(1)Aho、Weinberger、Kernighan三位发明者名字首字母;

(2)一个行文本处理工具;

2.AWK基本原理

2.1原理:

逐行处理文件中的数据

2.2语法:

awk 'pattern + {action}'
说明:

  • (1)单引号''是为了和shell命令区分开;
  • (2)大括号{}表示一个命令分组;
  • (3)pattern是一个过滤器,表示命中pattern的行才进行action处理;
  • (4)action是处理动作;
  • (5)使用#作为注释;
    例子:显示hello.txt中的第3行至第5行
cat hello.txt | awk 'NR==3, NR==5{print;}'

2.3pattern说明

pattern参数可以是egrep正则中的一个,正则使用/pattern/
例子:显示hello.txt中,正则匹配hello的行

cat hello.txt | awk '/hello/'

说明:

  • (1)pattern和action可以只有其一,但不能两者都没有;
  • (2)默认的action是print;
    例子:显示hello.txt中,长度大于100的行号
cat hello.txt | awk 'length($0)>80{print NR}'

3.内置变量

FS 分隔符,默认是空格
NR 当前行数,从1开始
NF 当前记录字段个数
$0 当前记录
$1~$n 当前记录第n个字段

例子:显示hello.txt中的第3行至第5行的第一列与最后一列

cat hello.txt | awk 'NR==3, NR==5{print $1,$NF}'

4.内置函数

gsub(r,s):在$0中用s代替r
index(s,t):返回s中t的第一个位置
length(s):s的长度
match(s,r):s是否匹配r
split(s,a,fs):在fs上将s分成序列a
substr(s,p):返回s从p开始的子串

5.操作符

5.1运算符

类似于c,支持+、-、*、/、%、++、–、+=、-=等诸多操作;

5.2判断符

类似于c,支持==、!=、>、=>、~(匹配于)等诸多判断操作;

6.控制流程

6.1.BEGIN和END

BEGIN和END本质是一个pattern。
BEGIN用于awk程序开始开始前,做一些初始化的工作;
END用于awk程序结束前,做一些收尾的工作。
例子:统计字符个数

awk '
BEGIN
{
count=0;
}
{
count+=length($0);
}
END
{
print count;
}'

6.2流程控制语句

  • (1)if(condition){}else{}
  • (2)while{}
  • (3)do{}while(condition);
  • (4)for(init;condition;step){}
  • (5)break/continue:如果有END,会执行END中的收尾工作
    流程控制语句用法几乎与c相同。

7.awk与shell的交互

  • (1)awk中使用shell中定义的变量:使用单引号即可;
#!/bin/bash
STR="hello"
echo | awk '{
print "'${STR}'";
}'
  • (2)awk中使用shell命令:使用双引号,或者system命令;
#!/bin/bash
echo hello | awk '{
print $0 | "cat"
}'

或者

#!/bin/bash
echo | awk '{
system("date > date.txt")
}'
  • (3)awk中的变量传出至shell:没有什么好方法,老老实实用文件吧;
  • (4)getline:awk里,从文件中读取变量到awk中
#!/bin/bash
echo | awk '{
while(getline < "date.txt")
{
print $0;
}
}'
目录
相关文章
|
8天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
71 6
|
9天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
37 3
|
9天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
27 2
|
16天前
|
缓存 监控 Linux
|
20天前
|
Linux Shell 数据安全/隐私保护
|
21天前
|
域名解析 网络协议 安全
|
3天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
20 3
|
27天前
|
运维 监控 网络协议
|
28天前
|
监控 Linux Shell
|
9天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
31 3