0

0

linux三剑客之awk,linux必学的强大工具!

蓮花仙者

蓮花仙者

发布时间:2025-06-25 12:08:37

|

665人浏览过

|

来源于php中文网

原创

linux中,文本处理的三大利器grep、sed和awk在工作和面试中频繁出现。即使是复杂的需求,往往只需一条简单的命令就能解决。本文将重点介绍其中最强大的工具awk。

awk的概念及作用

awk是一种强大的文本处理工具,常用于处理和分析文本数据。其基本语法如下:

awk [options] 'BEGIN{ print "start" } ‘pattern{ commands }’ END{ print "end" }' file

在awk中,BEGIN和END是关键字,必须大写,且为可选部分。BEGIN块在处理每行数据之前执行,END块则在处理完所有数据后执行,通常用于输出统计结果。

linux三剑客之awk,linux必学的强大工具!

awk的基本语法也可以简化为:

awk [options] 'pattern{action}' {filenames}

其中,pattern是匹配模式,表示awk在数据中查找的内容;action是找到匹配内容时执行的一系列命令。

awk匹配模式pattern参数

linux三剑客之awk,linux必学的强大工具!

awk常用参数

-F:指定分隔符,默认使用空格进行分隔。 -V:赋值一个用户定义变量。

awk命令中常用的内置变量

n:如1、2、3,表示取第几列信息。 NF:表示当前记录的域的个数,即根据分隔符分割后的列数。 $NF:取最后一列。 $(NF-n):取倒数第几列。 $0:取所有列的信息。 FILENAME:awk浏览的文件名。 NR:行号。 RS:行分隔符,默认是换行。 FS:列分隔符,默认是空格和制表符。 OFS:输出列分隔符,用于打印时分割字段,默认为空格。 ORS:输出行分隔符,用于打印时分割记录,默认为换行符。

awk流程控制

{if(表达式){语句;语句;...}}
{if(表达式){语句;语句;...}else{语句;语句;...}}
{if(表达式){语句;语句;...}else if(表达式){语句;语句;...}else if(表达式){语句;语句;...}else{语句;语句;...}}

学习案例:使用系统passwd文件进行演示

白果AI论文
白果AI论文

论文AI生成学术工具,真实文献,免费不限次生成论文大纲 10 秒生成逻辑框架,10 分钟产出初稿,智能适配 80+学科。支持嵌入图表公式与合规文献引用

下载

linux三剑客之awk,linux必学的强大工具!

  1. 打印第一列
awk  -F ':'  '{print $1}' /etc/passwd

linux三剑客之awk,linux必学的强大工具!

  1. 打印第二行的内容
awk -F ':' 'NR==2{print $0}' /etc/passwd

linux三剑客之awk,linux必学的强大工具!

  1. 打印第5行到第10行的第1列
awk -F: '{if(NR>=5 && NR<=10) print $1}' /etc/passwd

linux三剑客之awk,linux必学的强大工具!

  1. 指定多个分隔符
echo "abc:def/linux" | awk -F '[:/]' '{print $1","$2","$3}'

linux三剑客之awk,linux必学的强大工具!

  1. 统计passwd文件每行的行号、列数、行内容
awk  -F ':'  '{print "行号:" NR ",列数:" NF ",行内容:"$0}' /etc/passwd

linux三剑客之awk,linux必学的强大工具!

  1. 打印以mysql开头的行
awk '/^mysql/'  /etc/passwd

linux三剑客之awk,linux必学的强大工具!

  1. 过滤IP
ifconfig | awk '/broadcast/{print}' | awk -F " " '{print $2}'

linux三剑客之awk,linux必学的强大工具!

  1. 统计/etc/passwd下的账户数
awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}' /etc/passwd

linux三剑客之awk,linux必学的强大工具!

  1. 打印字符串长度大于3的单词
echo "I am a teacher" |awk '{for(i=1;i<=NF;i++) if(length($i)>3) print $i}'

linux三剑客之awk,linux必学的强大工具!

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

660

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

245

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

281

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

514

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

253

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

386

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

528

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

599

2023.08.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.1万人学习

swoole入门物联网开发与实战
swoole入门物联网开发与实战

共15课时 | 1.2万人学习

swoole项目实战(第二季)
swoole项目实战(第二季)

共15课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号