尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Linux 中文本处理:cut 和 awk命令
cut和awk都是 Linux 中用于文本处理的命令行工具常用于从文件或数据流中提取、处理和分析文本。cut偏向简单、快速的列提取而awk是一个完整的文本处理编程语言功能强大得多。一、cut命令简单列提取cut用于按列字段或字符位置从文本中提取数据适合处理结构化的表格数据如 CSV、日志。1. 基本语法cut -d 分隔符 -f 字段列表 文件 cut -c 字符范围 文件2. 常用选项选项含义示例-d指定字段分隔符默认是制表符\t-d,指定逗号分隔-f指定要提取的字段列-f1,3提取第1和第3列-c按字符位置提取-c1-5提取第1到第5个字符--complement提取指定字段以外的字段-f2 --complement提取除第2列外的所有列3. 使用示例示例 1提取 CSV 文件中的列# 假设 data.csv 内容 # 姓名,年龄,城市 # Alice,25,北京 # Bob,30,上海 # 提取第 1 列和第 3 列 cut -d, -f1,3 data.csv # 输出 # 姓名,城市 # Alice,北京 # Bob,上海 # 提取第 2 列年龄 cut -d, -f2 data.csv # 输出 # 年龄 # 25 # 30示例 2提取日志文件中的特定字段# 提取 /etc/passwd 中的用户名第1列和 shell第7列 cut -d: -f1,7 /etc/passwd | head -3 # 输出 # root:/bin/bash # daemon:/usr/sbin/nologin # bin:/usr/sbin/nologin示例 3按字符位置提取# 提取每行的前 10 个字符 cut -c1-10 file.txt # 提取每行的第 5 到第 15 个字符 cut -c5-15 file.txt # 提取每行的第 10 个字符 cut -c10 file.txt示例 4配合管道使用# 查看占用内存前 5 的进程提取 PID 和 CMD ps aux --sort-%mem | head -6 | tail -5 | cut -c10-20,50-二、awk命令文本处理编程语言awk是一个强大的文本分析工具它更像一门编程语言支持变量、条件判断、循环、数组等适合更复杂的文本处理任务。1. 基本语法awk 模式 { 动作 } 文件模式条件如NR1、/error/动作对匹配行执行的操作如print $1、sum$32. 常用内置变量变量含义$0整行内容$1,$2...第1列、第2列...NF当前行的列数Number of FieldsNR行号从1开始FS输入字段分隔符Field SeparatorOFS输出字段分隔符RS输入记录分隔符行分隔符ORS输出记录分隔符3. 使用示例示例 1打印整行或特定列# 打印整行 awk {print $0} file.txt # 打印第1列和第3列默认以空格分隔 awk {print $1, $3} file.txt # 打印第2列和第5列用逗号分隔 awk {print $2 , $5} file.txt # 打印文件中的第 2 列 awk {print $2} data.txt示例 2指定分隔符# 处理 CSV逗号分隔 awk -F, {print $1, $3} data.csv # 等价于 awk BEGIN{FS,} {print $1, $3} data.csv # 处理 /etc/passwd冒号分隔 awk -F: {print $1, $7} /etc/passwd示例 3条件过滤# 打印文件头第1行 awk NR1 file.txt # 打印第 10 到第 20 行 awk NR10 NR20 file.txt # 打印包含 error 的行 awk /error/ {print $0} log.txt # 打印第3列大于50的行 awk $3 50 {print $0} scores.txt # 打印第2列以 /bin/ 开头的行 awk $2 ~ /^\/bin\// {print $0} file.txt示例 4计算和统计# 计算第3列的总和 awk {sum $3} END {print 总和:, sum} data.txt # 计算行数 awk END {print 总行数:, NR} file.txt # 计算第3列的平均值 awk {sum $3} END {print 平均值:, sum / NR} data.txt # 统计每行的列数 awk {print NF, $0} file.txt示例 5格式化输出# 自定义输出格式 awk {printf 姓名: %-10s 年龄: %3d\n, $1, $2} data.txt # 添加表头 awk BEGIN{print 姓名\t年龄} {print $1\t$2} data.txt三、cutvsawk对比特性cutawk功能简单的列提取完整的文本处理语言编程能力无支持变量、循环、数组、条件判断复杂计算不支持支持分隔符单个字符支持正则表达式学习难度低中等适用场景快速、简单的列提取复杂的文本处理和数据分析
RELATED

相关推荐

法国退场之后,谁在给萨赫勒播音

法国退场之后,谁在给萨赫勒播音

Tim Marshall的《The Power of Geography》贯穿着一个看法:地理是牢笼,山脉、河流、海岸、纬度,不动声色地把一个国家的选择框死。广播大概是把这套道理体现得最直白的领域之一——一个信号能不能到你耳朵里,常由海水、山脉、纬度…

📅 2026/10/6 21:27:58
把 OData 慢请求拆开看,深入理解 SAP Gateway Performance Trace 与应用级性能埋点

把 OData 慢请求拆开看,深入理解 SAP Gateway Performance Trace 与应用级性能埋点

在 SAP Fiori 和 SAP Gateway 项目里,性能问题最麻烦的地方,往往不是发现页面慢,而是回答一个更具体的问题,时间究竟消耗在哪里。一个 Fiori 列表页打开需要 4 秒,浏览器只能告诉我们整条 HTTP 请求花了多久,却无法直接说明这 4 秒究竟消耗在 SAP Gateway Hub、RFC 通信、…

📅 2026/9/16 16:33:33
数学建模国赛A题攻略:从问题抽象到模型求解的完整框架

数学建模国赛A题攻略:从问题抽象到模型求解的完整框架

1. 赛题核心与破题方向:从“是什么”到“怎么想”又到了一年一度的数学建模国赛季,对于很多队伍来说,拿到赛题的第一时间,往往不是兴奋,而是短暂的迷茫。面对A题这种通常偏向物理、工程或复杂系统建模的题目&#xff0…

📅 2026/9/24 2:56:06
MORE NEWS

更多资讯

📰

ReentrantLock源码解析:从AQS到CLH队列的并发锁实现

1. 从一次“抢座位”说起:ReentrantLock到底在锁什么我在写并发代码时,遇到过一个很有意思的场景:办公室里只有一个会议室,大家都在抢。有人进去开会了,后面来的人就得在门外排队等候,会议结束出来一个&…

📰

2026年DDR5内存频率怎么选?从6000 CL30到7200的装机避坑指南

1. 从一堆内存条说起:为什么频率选择成了装机最纠结的事装一台机器,CPU和显卡往往是最先定下来的,预算的大头也在这两块。但真正让人在购物车里反复横跳、在论坛里翻帖翻到凌晨的,往往是内存。原因很简单:CPU和显卡的型…

📰

Java基础面试题122道:考点拆解与备考实战指南

最近后台一直有人问我要Java面试题,尤其是基础部分。说实话,网上Java面试题一抓一大把,但大部分要么是零散的知识点罗列,要么是直接照着别人的博客抄,连答案错没错都不管。我整理这份“基础题122道”其实是把过去几年面…

📰

智慧矿山项目建设整体解决方案怎么读?从五层架构到落地避坑

简介:面向智慧矿山规划者、煤矿企业信息化部门及矿业工程从业人员的整体解决方案资料,聚焦“两化”深度融合下煤矿智能化建设路径。文档共938页,以单个PDF文件打包,压缩包大小12.28MB,内容系统完整,便于按章…

📰

从JVM调优到DDD落地:大厂面试实战复盘与避坑指南

1. 面试前的那一周:我是怎么把JVM和DDD从"会背"练成"能打"的 接到大厂面试通知那天,说实话我心里是发虚的。简历上写着"熟悉JVM调优""实践过DDD",但自己清楚这俩词的分量:JVM是几乎所有J…

📰

OpenShell开始菜单替代工具:安装配置与进阶玩法全解析

1. 从"OpenShell"这个名字说起:它到底是个什么东西第一次看到"OpenShell"这个词,很多人会下意识地把它和"Shell"联系起来——毕竟在技术圈里,Shell通常指命令行解释器,比如Bash、Zsh、PowerShell这…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬