0

0

Linux怎么处理文本列 Linux使用awk提取文本指定列【进阶】

穿越時空

穿越時空

发布时间:2026-01-31 10:55:34

|

961人浏览过

|

来源于php中文网

原创

awk命令可实现Linux文本列的精细化处理:一、用-F指定分隔符提取列;二、结合正则条件筛选后输出;三、用正则FS或match/substr处理复杂字段;四、对列值进行算术运算与printf格式化;五、利用NR、RS等变量处理跨行数据。

linux怎么处理文本列 linux使用awk提取文本指定列【进阶】

如果您需要在Linux系统中对文本文件的列进行精细化处理,尤其是提取特定列并结合条件筛选、格式化或计算,awk命令提供了强大而灵活的进阶能力。以下是实现此类操作的具体方法:

一、使用awk按字段分隔符提取指定列

awk默认以空白字符(空格或制表符)为分隔符,通过$N可直接引用第N列。当文本使用非默认分隔符(如冒号、逗号、竖线)时,需显式指定-F选项。

1、提取/etc/passwd文件中用户名(第1列)和用户ID(第3列),以冒号为分隔符:
awk -F ':' '{print $1, $3}' /etc/passwd

2、提取CSV文件中第2列和第4列,以英文逗号为分隔符:
awk -F ',' '{print $2, $4}' data.csv

3、提取以竖线分隔的日志片段中第5列(响应状态码)和第8列(字节数):
awk -F '|' '{print $5, $8}' access.log

二、结合正则匹配条件筛选后提取列

awk支持在打印前对整行或某列执行模式匹配,仅对满足条件的记录执行列提取操作,避免冗余输出。

1、从netstat输出中提取所有处于ESTABLISHED状态的连接,并只显示本地端口(第4列)和远程地址(第5列):
netstat -tn | awk '$6 == "ESTABLISHED" {print $4, $5}'

2、从ps输出中筛选包含"nginx"的进程,提取PID(第2列)和命令名(第11列):
ps aux | awk '$11 ~ /nginx/ {print $2, $11}'

3、提取/etc/fstab中非注释、非空行的第1列(设备路径)和第2列(挂载点),跳过以#开头或全空白的行:
awk '!/^$/ && !/^\\s*#/ {print $1, $2}' /etc/fstab

三、使用自定义字段分隔符与动态列定位

当字段内容本身包含空格但逻辑上属于同一列(如日志中的带空格时间戳),可借助正则表达式定义FS,或用match()函数配合substr()精确定位。

1、将Apache日志中双引号包裹的User-Agent字段(通常为第12列)完整提取,避免被内部空格错误切分:
awk -F '"[^"]*"|\s+' '{print }' access.log

QIMI奇觅
QIMI奇觅

美图推出的游戏行业广告AI制作与投放一体化平台

下载

2、使用正则FS匹配多个连续空白作为分隔符,确保多空格对齐的列不被误判:
awk -F '\\s+' '{print $1, $NF}' aligned_data.txt

3、先用match()定位引号内起始位置,再用substr()截取完整字段:
awk '{start = match($0, /"([^"]*)"/); if (start) print substr($0, RSTART+1, RLENGTH-2)}' access.log

四、对提取列执行算术运算与格式化输出

awk内置变量和运算符支持对列值进行加减乘除、计数、求和、平均等操作,并可用printf实现对齐、补零、单位转换等格式控制。

1、统计系统中各用户启动的进程数,对第1列(USER)计数并排序:
ps -eo user= | awk '{count[$1]++} END {for (u in count) print u, count[u]}' | sort -k2,2nr

2、提取df输出中已用空间(第5列,含%符号),去除%并计算数值大于85的文件系统:
df | awk '$5 ~ /%$/ {sub(/%/, "", $5); if ($5 > 85) print $1, $5"%"}'

3、对日志中第10列(响应时间毫秒)求总和、均值与最大值:
awk '{sum += $10; if ($10 > max) max = $10; cnt++} END {printf "Sum: %d, Avg: %.2f, Max: %d\n", sum, sum/cnt, max}' access.log

五、多行合并与跨行字段关联提取

利用awk的NR(总行号)、FNR(当前文件行号)、RS(输入记录分隔符)和ORS(输出记录分隔符)变量,可处理跨物理行逻辑上属于同一记录的文本,例如邮件头、JSON块或分段日志。

1、将邮件头中Subject和From字段合并为单行输出,以空行分隔不同邮件:
awk '/^Subject:/ {sub(/^Subject: */, ""); subj = $0; next} /^From:/ {sub(/^From: */, ""); print subj "\t" $0}' mail.txt

2、将多行JSON对象(每对象占多行)按字段提取:先设RS为空行,再用gsub()清理换行后解析:
awk 'BEGIN{RS=""} {gsub(/\n/, " ", $0); if ($0 ~ /"name":/) print $0}' json_blocks.txt

3、提取top命令动态输出中CPU使用率最高进程的命令名(第12列)和占用率(第9列),需跳过标题行:
top -bn1 | awk 'NR > 7 {if ($9 > max) {max = $9; cmd = $12}} END {print cmd, max}'

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

233

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

502

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

501

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

234

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

341

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3521

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

34

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

55

2026.01.13

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

3

2026.01.31

热门下载

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

精品课程

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

共48课时 | 8.2万人学习

Git 教程
Git 教程

共21课时 | 3.2万人学习

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

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