awk编辑器

目录

工作原理

命令格式

普通格式

BEGIN格式

语句循环格式

awk常见的内建变量(可直接用)

按行打印行内容

统计行数量

按字段输出文本

通过管道、双引号调用 Shell 命令


awk编辑器是一种流编辑器

工作原理

  • 逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
  • awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。
  • 在使用awk命令的过程 中,可以使用逻辑操作符“&&“表示“与”、“||“表示“或”、“!“表示“非”;还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。

命令格式

普通格式

awk 选项 '模式或条件 {操作}' 文件 1 文件 2 …      #对文件1,文件2进行操作
awk -f 脚本文件 文件 1 文件 2 …                           #用脚本对对文件1,文件2进行操作

BEGIN格式

awk 'BEGIN {...}; 条件{...}; END {...}'  文件     

  •   BEGIN {...}   表示处理文件前要执行的操作
  •   条件{...}     表示对匹配满足指定条件的文件行内容要执行的操作
  •   END {...}     表示处理完文件所有行内容后要执行的操作

语句循环格式

awk '{控制语句条件 {操作}}' 文件

awk 'if(条件表达式) {操作}' 文件                              #行内容满足if的条件则执行操作  

awk '变量=条件表达式?值1:值2; {操作}' 文件      

 #行内容是否条件表达式,如果条件成立则变量取值1,条件不成立则变量取值2

awk 'BEGIN{执行循环前的操作; while("命令" | getline) 每次循环的操作; 执行循环完后的操作}'                                                                           #使用while循环对每行内容执行操作
 

awk常见的内建变量(可直接用)

  • FS:列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
  • NF:当前处理的行的字段个数。
  • NR:当前处理的行的行号(序数)。
  • $0:当前处理的行的整行内容。
  • $n:当前处理行的第n个字段(第n列)。
  • FILENAME:被处理的文件名。
  • RS:行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是'\n'
  • FNR:awk当前读取的记录数,其变量值小于等于NR(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。
    NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件

按行打印行内容

awk '{print $0}' 文件                                       #打印文件里所有内容

awk 'NR=1{print $0}' 文件                              #打印文件里第一行内容

awk 'NR=1,NR=3{print $0}' 文件                    #答应文件里第一行到第三行的内容

awk 'NR>=80{print $0}' 文件                          #打印文件里80行以后的内容

awk '(NR>=70)&&(NR<=80){print $0}' 文件   #打印文件70行到80行的内容

awk '(NR>=70)||(NR<=80){print $0}' 文件      #打印文件70行和80行的内容

awk '(NR<=3)||(NR>=80){print $0}' 文件        #打印文件前3行和后80行的内容

awk '(NR%)==1 {print $0}' 文件                      #打印文件奇数行

awk '{print $0;getline}' 文件                            #打印文件奇数行   getline为跳到下一行

awk '(NR%)==0 {print $0}' 文件                      #打印偶数行

awk '{getline;print $0}' 文件                            #打印偶数行           getline为跳到下一行   

awk '/root/{print $0}' 文件                               #打印包含root的行内容

awk '/\/bin\/bash$/{print $0}' 文件                   #打印以/bin/bash结尾的行内容   

统计行数量

awk 'BEGIN {X=0}; /bash$/ {x++};END {print x}' 文件      #统计以bash结尾的行数

awk 'BEGIN {n=0;while("who" | getline)n++; print $n}'   #统计who命令的有多少行

按字段输出文本

默认以空格或tab键为分隔符进行分隔

awk -F ":" '{print $3}' 文件                   #输出每行中(以:分隔)的第3个字段
awk -F ":" '{print $1,$3}' 文件              #输出每行中(以:分隔)的第1、3个字段

awk -F ":" '$3<5{print $1,$3}' 文件     

#输出每行(以:分隔)第3个字段的值小于5的第1、3  个字段内容

awk -F ":" '!($3<200){print $0}' 文件               #输出每行第3个字段的值不小于200的行
awk -F ":" '/bash$/ {print $1":"$3}' 文件       

#输出每行以bash结尾的,并且以:分隔的第 一个字段和第三个字段,最后以:分隔输出内容

awk -F ":" '$3<5{print $1,$3,$NF}' 文件     

#输出每行(以:分隔)第3个字段的值小于5的第1、3个字段和最后一个字段内容 

awk -F ":" '$3<5{print NR,$0}' 文件                        #打印行号,同行输出 

awk -F ":" '$3<5{print NR} $3<5{print $0}' 文件    #打印行号,不同行输出 

awk -F ":" '$3~“bash”{print $0}' 文件             

 #输出每行中(以:分隔)的第3个字段包含bash的行内容           ~ 表示包含的意思

通过管道、双引号调用 Shell 命令

echo $PATH | awk 'BEGIN{RS=":"};END{print NR}'     

#统计以冒号分隔的文本段落数,END{}语句块中,往往会放入打印结果等语句

awk -F: '/bash$/{print | "wc -l"}' /etc/passwd        

#调用 wc -l 命令统计使用 bash 的用户个数,等同于 grep -c "bash$" /etc/passwd

free -m | awk '/Mem:/ {print int($3/($3+$4)*100)"%"}'    #查看当前内存使用百分比

top -b -n 1 | grep Cpu | awk -F ',' '{print $4}' | awk '{print $1}' 

 #查看当前CPU空闲率,(-b -n 1 表示只需要1次的输出结果)

date -d "$(awk -F "." '{print $1}' /proc/uptime) second ago" +"%F %H:%M:%S" 

 #显示上次系统重启时间

awk 'BEGIN {n=0 ; while ("w" | getline) n++ ; {print n-2}}' 

#调用w命令,并用来统计在线用户数

awk 'BEGIN {"hostname" | getline ; {print $0}}'    #调用 hostname,并输出当前的主机名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/641102.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

光环P3O不错的一个讲座

光环P3O不错的一个讲座&#xff0c;地址&#xff1a;https://apphfuydjku5721.h5.xiaoeknow.com/v2/course/alive/l_663dc840e4b0694c62c32d1d?app_idapphfuydJkU5721&share_fromu_5c987304d8515_wH2E5HgCgx&share_type5&share_user_idu_5c987304d8515_wH2E5HgCgx…

AIGC-风格迁移-“DEADiff:稳定可控的文本到图像风格化扩散模型 “-CVPR2024

DEADiff: An Efficient Stylization Diffusion Model with Disentangled Representations 代码&#xff1a;https://tianhao-qi.github.io/DEADiff/ 论文&#xff1a;https://arxiv.org/pdf/2403.06951 本文介绍了一种名为DEADiff的方法&#xff0c;旨在解决基于扩散的文本到图…

又翻车了!谷歌急于手动删除搜索中的奇怪AI答案|TodayAI

谷歌公司近日确认&#xff0c;正在“迅速采取行动”删除一些AI工具的奇怪回应。社交媒体上充斥着谷歌新AI概览产品&#xff08;AI Overview&#xff09;说出奇怪话语的例子&#xff0c;从告诉用户在披萨上涂胶水到建议他们吃石头。这次混乱的AI发布导致谷歌不得不手动禁用某些搜…

车灯合面合壳密封使用UV胶的优缺点是什么呢?汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

车灯合面合壳密封使用UV胶的优缺点是什么呢? 车灯合壳密封使用UV胶的优缺点如下&#xff1a; 优点&#xff1a; 快速固化&#xff1a;UV胶通过紫外线照射可以在短时间内迅速固化&#xff0c;大大缩短了车灯制造的工艺流程时间&#xff0c;提高了生产效率。高度透明&#xff…

二叉树——进阶(递归创建,非递归,广度优先,翻转,深度,对称)

二叉树——进阶 二叉树的递归创建非递归前中后序遍历非递归前序遍历非递归中序遍历非递归后序遍历 广度优先遍历二叉树&#xff08;层序遍历&#xff09;翻转二叉树 二叉树深度最大深度最小深度 对称二叉树 二叉树的递归创建 1&#xff0c;二叉树是一种结构相对固定的数据&…

金融信贷风控系统设计模式应用之模版方法

背景介绍 风控系统每种场景 如个人消费贷 都需要跑很多规则 规则1 申请人姓名身份证号实名验证规则2 申请人手机号码实名认证规则3 银行卡预留手机号码实名认证规则4 申请人银行卡预留手机号码在网状态检验规则5 申请人银行借记卡有效性核验规则6 户籍地址与身份证号归属地比…

微信小程序知识点1

一. 页面样式和结构 1.1 小程序组件(html) (1) 区域布局组件 view 定义块级区域&#xff0c;相当于网页中的 div 标签text 定义行内区域&#xff0c;相当于网页中的 span标签 (2) 链接跳转组件 navigator 组件相当于网页中的 a 标签&#xff0c;用来实现页面之间的跳转。 …

基于卷积神经网络的交通标志识别(pytorch,opencv,yolov5)

文章目录 数据集介绍&#xff1a;resnet18模型代码加载数据集&#xff08;Dataset与Dataloader&#xff09;模型训练训练准确率及损失函数&#xff1a;resnet18交通标志分类源码yolov5检测与识别&#xff08;交通标志&#xff09; 本文共包含两部分&#xff0c; 第一部分是用re…

力扣刷题---2206. 将数组划分成相等数对【简单】

题目描述&#x1f357; 给你一个整数数组 nums &#xff0c;它包含 2 * n 个整数。 你需要将 nums 划分成 n 个数对&#xff0c;满足&#xff1a; 每个元素 只属于一个 数对。 同一数对中的元素 相等 。 如果可以将 nums 划分成 n 个数对&#xff0c;请你返回 true &#xf…

高开高走的续作,可不止《庆余年2》

说起最近霸屏的影视剧&#xff0c;莫过于《庆余年2》。火爆全网的讨论度总归是没有辜负观众们五年的等待&#xff0c;在五月的影视市场独占鳌头已成定局。张若昀、陈道明、李沁等一众演员稳定发挥&#xff0c;剧情节奏随着故事发展渐入佳境&#xff0c;评分一路高涨。 对影视作…

【网络安全】社会工程学攻击与防范

一、社会工程学概述 1、社会工程学的定义 通过利用人们的心理弱点、本能反应、好奇心、信任、贪婪等一些心理陷阱进行的诸如欺骗、伤害、信息盗取、利益谋取等对社会及人类带来危害的行为或方法。 当网络恶意攻击者无法通过纯粹的计算机技术达到目的时&#xff0c;高超的情商…

统计信号处理基础 习题解答10-4

题目&#xff1a; 重复习题10.3&#xff0c;但条件PDF变为&#xff1a; 以及均匀先验。如果非常大&#xff0c;这样先验知识很少&#xff0c;则会出现什么情况。 解答&#xff1a; 如果记 那么&#xff0c;根据条件独立性质&#xff0c;得到&#xff1a; 其中&#xff0c;&am…

Web3 游戏平台 Creo Engine 销毁代币总量的20%,以促进长远发展

Creo Engine 5月16日进行了第三次代币销毁&#xff0c;这次的销毁占代币总量的 20%。一共销毁了2亿 $CERO 代币&#xff0c;市场价值接近 2000 万美元。 Creo Engine 致力于连接世界、为玩家提供一站式游戏中心&#xff0c;并提升 Web3 游戏体验。 Creo Engine 发布于2022年&am…

Python学习---基于TCP协议的网络通信程序案例

TCP简介&#xff1a; ●TCP 面向连接、可靠的、基于字节流的传输控制协议 ●TCP的特点 ○面向连接 ○可靠传输 ■应答机制 ■超时重传 ■错误校验 ■流量管控 ●TCP通信模型 TCP严格区分客户…

运维Tips | Linux系统文件命令执行时inode表如何变化?

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路。 ] 大家好&#xff0c;我是【WeiyiGeek/唯一极客】一个正在向全栈工程师(SecDevOps)前进的技术爱好者 作者微信&#xff1a;WeiyiGeeker 公众号/知识星球&#xff1a;全栈工程师修炼指南 主页博…

Linux下自旋锁的学习使用

前言 前面我们讲到定时器的使用,本篇讲下自旋锁的使用。想第一时间看我的文章的话可以点击公众号主页右上角有个设为星标&#xff0c;以免错过好文。本文源码采用Linux内核5.10 自旋锁简介 自旋锁是Linux内核里最常用的锁之一&#xff0c;自旋锁的概念很简单&#xff0c;就是…

误差反向传播简介与实现

误差反向传播 导语计算图反向传播链式法则 反向传播结构加法节点乘法节点 实现简单层加法乘法 激活函数层实现ReLUSigmoid Affine/Softmax层实现Affine基础版批版本 Softmax-with-Loss 误差反向传播实现梯度确认总结参考文献 导语 书上在前一章介绍了随机梯度下降法进行参数与…

ubuntu20.04 开机自动挂载外加硬盘

文章目录 一、问题描述二、操作1. 查找新添盘符2. 格式化硬盘文件系统3. 挂载硬盘4. 开机自动挂载5. 取消挂载6. 查看挂载的硬盘信息 一、问题描述 因电脑使用一段时间后自身硬盘不足&#xff0c;需外加硬盘使得电脑自动识别加载。 二、操作 1. 查找新添盘符 sudo blkid自己…

linux中的arch命令使用

arch 显示当前主机的硬件架构类型 概要 arch [OPTION]...主要用途 打印机器架构信息&#xff1b;arch 命令输出结果有&#xff1a;i386、i486、i586、alpha、sparc、arm、m68k、mips、ppc、i686等。 选项 --help 显示帮助信息并退出。 --version 显示版本信息并…

windows7的ie11降级到ie8

重点是要在程序管理窗口中“查看已安装的更新”打开当前系统中已安装更新列表&#xff0c;找到两个IE11的更新&#xff08;见下图“卸载文件“&#xff09;并卸载掉&#xff0c;这样windows功能中的ie11才会变成ie8. 打开控制面板 进入面板&#xff0c;点击程序&#xff0c;进…