0

0

Linux awk命令使用详解

高洛峰

高洛峰

发布时间:2016-12-15 11:14:07

|

1471人浏览过

|

来源于php中文网

原创

简单介绍一下,awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大,这是我们玩linux的必备基本功,若要对其身世有更详尽的了解,自行搜索即可。对于工具的知识,笔者尽量将每个知识点的简要说明,并给出实例。
 
简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
 
用法: 
awk [options] 'scripts' file1,file2... 
awk [options] 'pattern {action}' file1,file2...
 
options是awk的支持的选项,譬如-f -v等; scripts是其处理脚本,包含模式pattern和动作action(模式和动作的关系一般为,模式负责确定有效字段,动作负责对其处理)
 
一、print的简单使用
 
创建一个简单的测试文件如下:

[root@mos download]# cat demo.txt

Welcome to mos blog.

This is a test file.


例:打印整行: $0

[root@mos download]# awk '{print $0}' demo.txt

Welcome to mos blog.

This is a test file.

例:打印每行的最后一个字段: $NF

[root@mos download]# awk '{print $NF}' demo.txt

blog.

file.

例:打印第二个字段: $2

[root@mos download]# awk '{print $2}' demo.txt

to

is

例:打印每行的倒数第二个字段,并在其后打印OK

[root@mos download]# awk '{print $(NF-1),"OK"}' demo.txt

mos OK

test OK

例:打印行号

[root@mos download]# awk '{print NR,$0}' demo.txt

1 Welcome to mos blog.

2 This is a test file.

例:打印当前系统环境变量的某个特定值,譬如路径,下面俩输出一样

[root@mos download]# awk '{print ENVIRON["USER"];}' demo.txt

root

root

[root@mos download]# awk 'BEGIN{print ENVIRON["PATH"];}'

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

PS:后面的文件只是为了让print成功执行,BEGIN是执行前可以输出的数据,常用作写为报告标题和测试输出,其内容不能获得与文件修改操作有关的变量,后面会说到;

例:awk的默认分隔符为空格,而有些文本字以其他字符为分隔符,以下两例相同

[root@mos download]# awk -F: {'print $1,$NF'} /etc/passwd|tail -1

mos1 /bin/bash

[root@mos download]# awk -v FS=: '{print $1,$NF}' /etc/passwd|head -1

root /bin/bash

例:修改输出分隔符号,特殊字符需转义,如下几例:

[root@mos download]# awk -v OFS=. '{print $1,$NF}' demo.txt

Welcome.blog.

This.file.

[root@mos download]# awk -v OFS="~"'{print ,$NF}' demo.txt

JTBC网站内容管理系统5.0.3.1
JTBC网站内容管理系统5.0.3.1

JTBC CMS(5.0) 是一款基于PHP和MySQL的内容管理系统原生全栈开发框架,开源协议为AGPLv3,没有任何附加条款。系统可以通过命令行一键安装,源码方面不基于任何第三方框架,不使用任何脚手架,仅依赖一些常见的第三方类库如图表组件等,您只需要了解最基本的前端知识就能很敏捷的进行二次开发,同时我们对于常见的前端功能做了Web Component方式的封装,即便是您仅了解HTML/CSS也

下载

Welcome~blog.

This~file.

[root@mos download]# awk -v OFS=\" '{print $1,$NF}' demo.txt

Welcome"blog.

This"file.

[root@mos download]# awk -v OFS=9 '{print $1,$NF}' demo.txt

Welcome9blog.

This9file.

[root@mos download]# awk -v OFS=XXXX '{print $1,$NF}' demo.txt

WelcomeXXXXblog.

ThisXXXXfile.

PS: 若在print输出字段的之间不写逗号,则输出分隔符无效,输出的结果会直接连在一起

awk中有许多默认的变量,例如之前列出的:$1~$n、$0、FS、OFS等。下图为awk内置变量表:

属性 说明

$0 当前记录(作为单个变量)

$1~$n 当前记录的第n个字段,字段间由FS分隔

FS 输入字段分隔符 默认是空格

NF 当前记录中的字段个数,就是有多少列

NR 已经读出的记录数,就是行号,从1开始

RS 输入的记录他隔符默 认为换行符

OFS 输出字段分隔符 默认也是空格

ORS 输出的记录分隔符,默认为换行符

ARGC 命令行参数个数

ARGV 命令行参数数组

FILENAME 当前输入文件的名字

IGNORECASE 如果为真,则进行忽略大小写的匹配

ARGIND 当前被处理文件的ARGV标志符

CONVFMT 数字转换格式 %.6g

ENVIRON UNIX环境变量

ERRNO UNIX系统错误消息

FIELDWIDTHS 输入字段宽度的空白分隔字符串

FNR 当前记录数

OFMT 数字的输出格式 %.6g

RSTART 被匹配函数匹配的字符串首

RLENGTH 被匹配函数匹配的字符串长度

SUBSEP \034

声明一下:由于许多变量笔者亦不怎么常用,因此笔者此处未全部列出。

更多Linux awk命令使用详解相关文章请关注PHP中文网!

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

19

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

6

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

1

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

2

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

1

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

61

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

53

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

26

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

31

2026.01.31

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.4万人学习

PHP入门到实战消息队列RabbitMQ
PHP入门到实战消息队列RabbitMQ

共22课时 | 1.3万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.5万人学习

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

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