linux三剑客awk教你如何裁剪结果集

Linux 文本处理“三剑客”:sed命令完全指南 Linux 文本处理“三剑客”:sed命令完全指南Linux 文本处理“三剑客”里,sed 常被视作批处理利器。面对日志、配置、代码批量重写,个人觉得 sed 的流式思路能让重复操作彻底自动化,下文按照“概念 → 命令 → 参数 → 场景 → 最佳实践”展开。核心概念流式编辑器的思维方式sed 逐行读入文本到 Pattern Space,按脚本匹配后输出或丢弃,原文件默认不被改写。Hold Space 负责暂存上下文,比如跨多行的匹配; 阅读详情

awk

  • awk在Linux中我们称之为输出。在Linux的终端上所有的东西我们都可以用awk来输出赋值。

  • 首先我们要知道终端的所有内容都可以简化为上图的二维结构。awk既然是输出那就需要一个坐标及跨度才能确定输出的内容
  • 输出其实包含两个一次,一个是获取一个是返回。我们往往关注的重点是返回的结果集。但是两者是缺一不可

awk内置变量

  • 在了解变量之前我们得先了解下awk的基本单元。
变量解释说明
行记录Record通过回车判定行
列字段Field默认通过空格分割
参数解释
- F指定分割字符串
-v定义或修改awk内置变量 ; 内置变量如下
-f读取文件内awk命令
  • 好了有了这两个关键名词之后我们再来看awk为我们内置的对象就简单很多了。
变量功能
NR记录的行号; Number Of Row ==NR
FNRawk [参数] [动作] file1 file2 ;此时动作中使用FNR显示行号会显示各个文件的行号,如果NR则会两个文件汇总后显示行号
NF记录的列号: Number of Field == NF
FS列分割符 : File Separator = FS
OFS输出字段分割符: OUT FILE SEPERATOR = OFS
RS行分隔符;即是换行符;比如我们行空格匹配换行。awk -v RS=" " '{print $1}' demo.txt
ORS指定输出换行符
FILENAME当前文件名
ARGC命令行参数个数
ARGV数组: 保存的是命令行锁指定的各参数名

获取数据

awk
NR==1取出第一行
NR>=1&&NR<=5取出一到五行范围
/tom/显示tom匹配的行
/tom/,/jack/匹配现实从lcf 到jack之间的内容
符号> < >= <= == !=
-F每一列结束标记
{print $num}获取某列值 , num=0表示取出整行数据

  • 上面是获取某个结果集的指定几列并且按照自己的规格输出。
 username  password fav age
 zhangsan 123 ball 13
 lisi 123 swim 15
 wangwu 1w3 eat 82
复制代码
  • 针对上面的文本我们来实现上述的几个操作

查询fav列包含2的数据

 cat demo.txt | awk -F "[ ]+" '$2~/.*2.*/'
复制代码

查询fav列包含2的指定列数据

 cat demo.txt | awk -F "[ ]+" '$2~/.*2.*/{print $1,$2,$NF}'
复制代码

查询zhangsan到lisi之间数据的最后一列

 cat demo.txt | awk -F "[ ]+" '/zhangsan/ , /lisi/{print $NF}'
复制代码

查询2,3行数据

 awk 'NR==2{print $0}NR==3{print $0}' demo.txt
复制代码

获取最后一行数据

 cat demo.txt | awk 'END{print $0}'
复制代码

统计

  • awk 我们上面二维的方式输出内容。但是有时候我们想统计文本内容。比如统计关键词出现的次数啦。计算文本内容啦等等需求。这个时候awk为我们提供了两个特别的模式。BEGIN。END
模式含义应用场景
BEGIN{}里面的内容会在awk读取文件前执行1.进行简单统计计算不涉及读取文件 2.用来处理文件之前写个表头
END{}里面的内容会在awk读取文件后执行1.awk进行统计,一般统计:先计算,最后END输出结果 2.awk使用数组,用来输出结果
功能shellawk
数组array[0]=tomarray[0]=tom
打印数组echo $array[0]printf array[0]
循环for i in ${array[*]} do echo $i done (shell中循环获取的是数组中元素)for(i in array) print array[i] (awk中获取的是元素下标)
判断if [ "tom" -eq 18 ];then echo good fiif($NF>18) print "good" else print "bad"
  • if往往会单独使用。for往往是结合BEGIN。END使用的。假如现在我们要统计下上述文本123出现的概率
 cat demo.txt | awk '{for(i=1;i<=NF;i++) if($i=="123") a++} END{print a}'
Linux进程管理三剑客:ps、nice、kill的协同闭环解析 在Linux系统中,进程管理本质上是资源调度与状态干预的综合实践。ps命令并非简单列出进程,而是读取内核/proc接口获取实时状态快照;nice通过影响CFS调度器的vruntime权重来调节CPU时间分配;kill则本质是信号投递机制,不同信号(如SIGTERM/SIGKILL)触发进程差异化响应。三者构成‘观察→评估→干预→验证’的最小闭环,支撑高可用服务的稳定性运维。本文深入解析ps的多维筛选、nice的继承性与权限限制、kill信号的语义差异,并结合CPU飙升等真实场景,展示如何避免误杀、实现优雅降 阅读详情

相关推荐

INCA基础教程

以软件自带Demo为例记录INCA学习过程,主要内容包括测量与标定。

yunqianrui的博客 6万+

awk 截取部分字符串_30分钟速学linux文本处理神器AWK命令

1. 简介awk是一个强大的文本分析工具 ,和大家经常使用的grep、sed 并称linux文本处理三大神器,相较于grep、sed来说awk更加强大,强大到几乎可以实现另外两位的大部分功能,强大到拥有自己的编程语言,甚至于可以创建简短的程序,来实现数据排序,处理数据,执行计算,生成报表等等无数其他的功能。2. 命令格式awk 操作符 ' 模式 { awk语法指定的操作 }' 数...

weixin_28914903的博客 4394

CUDA编译踩坑实录:如何正确设置-gencode参数适配你的GPU算力

本文深入解析CUDA编译中-gencode参数的核心原理与实战配置,帮助开发者解决常见的'Unsupported gpu architecture'错误。通过厘清虚拟架构与真实架构的区别,并提供多版本兼容的CMake配置方案,确保编译出的代码能精准适配不同GPU算力,兼顾性能与广泛兼容性。

weixin_28829903的博客 339

Linux awk语法,过滤切割

【代码】Linux awk语法,过滤切割。

qq_31426093的博客 294

硬件即代码:用软件工程思维拆解F450无人机装配的模块化设计哲学

本文探讨了如何用软件工程思维重构DJI-F450无人机的模块化设计,将硬件装配提升为可编程系统。通过硬件抽象层、控制系统分层架构和扩展槽位设计模式,展示了无人机装配的模块化哲学,并结合实际案例说明如何优化性能与安全性。

weixin_29294975的博客 388

数字IC设计——功耗分析

功耗是数字IC芯片的一个重要指标

知识,既贵,又便宜。 9371

shell字符截取之awk命令

1. 命令格式 awk '条件1{动作1} 条件2{动作2}...' 文件名 条件 一般使用关系表达式作为条件 x>6:判断x是否大于6 x>=6:是否大于等于6 动作 格式化输出 流程控制语句(for循环、if语句) 2. 练习: print与printf [root@catyuan ~]# vim student id name age sex ...

catyuan的博客 7275

全志T113s3主线linux开发(0)--基础准备

嵌入式Linux设备的启动大概是三步:1)启动芯片+内存:常见的是Uboot,不过全志的Uboot主线对SPI NAND 不太友好,用TF卡就方便。对于T113S芯片,推荐使用Awboot,简陋但快速。开发阶段用这个就方便好多,对SPINAND支持也方便。2)启动linux内核:主线内核以下通篇都用6.13以上的内核。对比tina5.0还在用5.4 ,主要是性能、安全上有变化。6.0以上内核在devicetree的编写具体格式上有了变化,网上大量tina5.0和5.4内核的编写方式不适用。

2301_79234138的博客 2247

shell三剑客之awk 数据截取工具 详解

目录 awk 数据截取工具 ①awk简介 ②awk语法结构 OPTIONS PROGRAM pattern action ③变量 ④流程控制 ⑤数组 ⑥内建函数     ①awk简介 &gt;&gt;&gt;awk是一种编程语言(解释性语言,不需要编译),用于数据截取和报告的工具 &gt;&gt;&gt;awk自动搜索输入的文件,并把每个输入行切分成多个字段(字段:...

Mr_Bei的博客 1万+

MATLAB计算各种复合干热指数,如SDHI、DHMI等

MATLAB编程实现各种复合干热指数

WW、forever的博客 5082

xilinx原语及bank简介

图8是HP bank与HR bank的IO模块,其中PAD是FPGA的金属管脚,IOB是输入、输出引脚的控制模块。此时使用原语就可以只调用需要的组件,不需要去考虑其余组件参数设置,就方便很多,借助此次机会就对IDDR、ODDR、IDELAYE2、ODELAYE2、IDELAYCRTL、ISERDESE、OSERDESE等几个原语做了简要了解,并对原语的各个模式进行了仿真,本文最初是介绍IDDR的,但在介绍IDDR这些原语之前,还需要了解一下7系列FPGA bank的分类和区别,所以就有了本文。

qq_43416206的博客 413

linux awk 使用之截取

1.awk截取命令 awk -F ‘截取字符’ {print $n} file 例如: 上图中是一个文件的内容,我们这个时候想要获取bundleIdMap为::后面的数据,这个时候我们命令应该怎么写 awk -F "::" '{print $2}' jenkins.env 通过我们执行命令,我们可以看到,已经初步完成了,但是大家一定有疑惑,为啥有这么多空行。 原因是,我们这个文件是有很多行,我们按照::截取后,取了第二列的内容,但是其他行又没有内容所以就出现了这么多空行 解决方案 通过grep定位到当

constant_rain的博客 6635

AUTOSAR&UDS 理论要点及isolar实战-DEM模块

从这节开始,将讲解UDS诊断中非常重要的知识点:故障事件触发、故障信息上报、故障信息处理、故障信息存储和故障系统降级,后续会陆续更新。

cqaa11的博客 553

文本处理三剑客grep awk sed

文本处理器三剑客

2503_93713461的博客 842

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

正则表达式,linux文本三剑客

正则表达式匹配的是文本内容,linux的文本三剑客都是针对文本内容,按行进行匹配。

s320721的博客 849

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

文本三剑客之一 grep

对文件内容的增删改查linux的文本三剑客:1:过滤(查找文件内容和正则表达式一块使用)2:awk :对行进行取列,awk自带编程3:sed: 改。

Lachewuxian的博客 135

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Linux三剑客

output -delimiter 更改输出内容的。-d 制定分隔符,默认分隔符是tab,不是空格。awk的默认分隔符是空格,多个空格也会算一个。-f 按字段进行截取,制定要截取第几个字段。-complement 删除制定的定段。针对文件内容的操作(三剑客之一)cut:截取,和awk有相似之处。cat 文件名 | cut 选项。-b指定文件大小拆分 block。针对文件的内容进行匹配或者过滤。大文件拆分成若干个小文件。-b 以字节为单位截取。-c以字符为单位截取。paste 文件合并。

m0_58164957的博客 150

文本三剑客

监控内存,cpu,和硬盘的根目录,要求超过80%提示用户,写成函数库的形式,每天早上的八点五十分,执行一次脚本。​ RS 行分隔符,可以根据RS的设置把文件内容切割成多个记录,也可以改变行的分隔符,默认是\n,回车,换行。-s 替换,把字符集1的部分替换成字符集2的部分|连续重复出现的字符压缩成一个。sed的作用就是对文本的内容进行增删改查,其中最好用的就是改和增。一行一行处理,处理完当前这行,才会处理下一行,直到文件末位.​ -R 递归匹配目录下的文件包含的内容,对软连接也起效。

qq_59169480的博客 833

文本三剑客之grep

awk、grep、sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。grep命令是inux 系统中一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是,表示全局正则表达式版本,它的使用权限是所有用户。

m0_71888825的博客 472

shell脚本三剑客之grep

e 逻辑或 ,可以匹配多个条件 可以实现多个选项间的逻辑关系,可以跟多个条件。-c 统计连续重复的行的次数,并且合并重复的行并打印,不会改变文件的内容。-A 跟数字 匹配到内容行后,在向下展示几行,包含匹配到的行。-f 根据两个文件的内容进行匹配,匹配两个文件中相同的内容。-m 多个匹配的话,可以限定显示的行数,匹配几次之后停止。-o 输出的文件名,将排序后的结果转存到指定的文件。-u 显示仅出现一次的行,包括不连续的重复行。-d 仅显示重复出现的行,必须是连续的重复行。

youdiannana的博客 138

文本编辑命令和正则表达式

n:按照数字大小进行排序,此时不是按照单个字符进行比较,而是行首所有连续的数字都能被识别,按照识别到的数字的大小进行排序。\

XH722DF的博客 1393

Shell脚本之文本处理三剑客——grep

grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。过滤文本内容,针对行进行处理。

weixin_46254171的博客 752

Shell脚本攻略:文本三剑客之grep

所以,从grep的全称中可以了解到,grep是一个可以利用”正则表达式”进行”全局搜索”的工具,grep会在文本文件中按照指定的正则进行全局搜索,并将搜索出的行打印出来。grep是Linux中最常用的”文本处理工具”之一,grep与sed、awk合称为Linux中的三剑客。uniq命令用于报告或者忽略文件中连续的重复行,常与sort命令结合使用。(5)去重(统计连续重复的行的次数,并且合并重复的行)(5)去重(统计连续重复的行的次数,并且合并重复的行)文件合并,按照字段来进行文件的合并,左右合并。

cronaldo91的博客 1661

Linux中正则表达式等

:alnum:]] \S #匹配任何非空白字符。等价于 [ \f\n\r\t\v]。也就是由一些特殊字符组成的特定格式的内容,用来匹配文件当中的内容。-m 数字:匹配几次之后停止,按行匹配,不是按字符个数,例如。[:alnum:]] \W #匹配非单词构成部分,等价于[^\ +:匹配前面出现的字符最少一次,最多任意次。-c:统计连续重复出现的行的次数,并且合并重复的行,并展示。\ {n,m\ }:表示前面的字符最少有n次,最多有m次。\ {,n\ }:表示前面的字符,最多有n次,0次也算。

m0_75000405的博客 563

正则表达式

{n}配前面的字符=n次,可以小于n,但是不能大于n,而且前面的字符必须要连续出现。-s 把字符集1的部分替换成字符集2的部分,把连续重复出现的字符压缩成一个字符。\<或者\b 词首锚定,匹配单词的左侧(连续的数字,字母,下划线都算单词内部)正则表达式匹配的是文本内容,linux的文本三剑客 都是针对文本内容。*匹配前面的字符任意次,0也可以。-c 保留字符集1的字符,其他的字符用字符集2进行替换。-d 仅显示连续重复的行(不包括非连续出现的·内容)-c 统计连续重复·的行的次数,合并连续重复的行。

yexiaoyex的博客 1132
上一篇: 秋招升级打怪拿offer,10w+字总结的Java面试题(附答案)够你刷
下一篇: 阿里JAVA面试解析:七个模块68道Spring面试题,带你吊打面试官
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值