Linux:Shell编辑之文本处理器(awk)
目录
绪论
1、用法
1.1 格式选项
1.2 awk 常用内置变量
1.3 awk的打印功能
1.4 奇偶打印
1.5 awk运算
1.6 awk的内置函数:getline
1.7 文本过滤打印
1.8 awk条件判断打印
1.9 三元表达式,类似于java
1.10 awk的精确筛选
1.11 awk和tr比较改变分隔符
1.12 awk结合数组来进行使用
1.13 去重统计
绪论
awk是文本三剑客之一(grep,sed,awk),是功能最强大的文本工具,也是按行来进行操作,对行操作完之后,可以根据指定命令来进行取列
awk的分割符,他的默认分隔符是空格,或者tab键,多个空格,它会自动压缩成一个
1、用法
awk 选项 '模式或者条件{操作}' 文件
1.1 格式选项
-F 指定分割符,如果是空格,则不需要加F
-v 变量赋值
{操作}:默认为打印
eg:awk '{print $1}' test.txt 打印第一列
打印多列的话用逗号隔开,$0表示全部打印
1.2 awk 常用内置变量
$0 打印所有内容
$n 处理行的第几列
NR 处理行的行号
NF 处理当前行的字段个数,$NF就表示最后一个字段
FS 列分割符,指定文本的分割符,和F作用一直
F:分割符 FS=":"
OFS 输出文本的分割符
RS 输出分割符为回车,行分割符
内置变量$n要加$,表示列的;其他的内置变量,不用加$,更不能用引号,也不能用括号,否则会被当成字符串处理
1.3 awk的打印功能
awk '{print} ' 文件名
awk '{print NR} ' 文件名
awk '{print NR,$0} ' 文件名
指定行号打印输出内容:
awk 'NR==3{print}' test,txt 打印第三行
awk 'NR==2,NR==4{print}' test,txt 打印第二到四行
awk 'NR==2;NR==4{print}' test,txt 打印第二和四行
1.4 奇偶打印
awk 'NR%2==0{print}' 文件名 偶数打印
1.5 awk运算
awk 'BEGIN{PRINT 10+20}'
awk 'begin{print 3^2}' 3的2次方,也支持小数运算
awk '{print $3}' test.txt取出第三行
1.6 awk的内置函数:getline
· 如果getline左右两侧没有重定向符号(<>),或者没有(|)时,awk会先读第一行,但是如果加了getline,跳过第一行,读取第二行
awk '{getline;print}' test.txt 打印了第二行和第四行,偶数打印
awk '{print;getline}' test.txt 奇数打印
· 如果两边有重定向或者管道符,getline作用于定向输入文件
awk '{getline < "test1.txt";print>"test2.txt"}' test1.txt操作对象是test1.TXT,获取test1的内容,传给test2
ls | awk '{getline ky30;print ,ky30;}' getline:自定义的变量。把ls输出的结果传给ky30,打印前面ls的结果
1.7 文本过滤打印
awk 以root为开头的行:
awk '/^root/{print}' /etc/passwd
awk 'BEGIN{..};{..};END{..}' 文件在对文件进行操作之前会先执行BEGIN{..}的模式条件,或者是命令操作。中间的{..}是真正的处理文件的命令。END{..}结束语句,一般都是打印执行结果
v变量赋值,指的是改变分割符
1.8 awk条件判断打印
awk -F: '$3>100{print}' /etc/passwd | head -n 15 第三列大于100的打印出来
取反:awk -F: '!($3>10){print}' /etc/passwd | head -n 15
awk支持条件判断语句if
awk -F: '{if ($3>10) {print}}' /etc/passwd
1.9 三元表达式,类似于java
格式:awk '(条件表达式)?(A表达式或者值):(B的表达式或者值)'
?相当于if :相当于else
awk -F: '{i=($3>$4)?$3:$4;{print $1,$2}}' /etc/passwd
1.10 awk的精确筛选
$NF:最后一个字段
head -n 2 /etc/passwd | awk -F: '{print $NF}' 第七个字段为bash,打印第一列和最后一列
awk -F: '$7!~"nologin"{print $1,$3}' /etc/passwd 第七个字段不是nologin的打印第一列和第三列
&&和 ||或 条件表达式用括号括起来
1.11 awk和tr比较改变分隔符
echo a b < d | tr " " " " ":" 输出a:b:c:d
1.12 awk结合数组来进行使用
在awk中怎么定义数组
1.13 去重统计
提取host.txt主机名
awk -F '[ .]+' '{print $2}' test.txt
相关文章:

Linux:Shell编辑之文本处理器(awk)
目录 绪论 1、用法 1.1 格式选项 1.2 awk 常用内置变量 1.3 awk的打印功能 1.4 奇偶打印 1.5 awk运算 1.6 awk的内置函数:getline 1.7 文本过滤打印 1.8 awk条件判断打印 1.9 三元表达式,类似于java 1.10 awk的精确筛选 1.11 awk和tr比较改变…...

探索FSM (有限状态机)应用
有限状态机(FSM) 是计算机科学中的一种数学模型,可用于表示和控制系统的行为。它由一组状态以及定义在这些状态上的转换函数组成。FSM 被广泛用于计算机程序中的状态机制。 有限状态机(FSM)应用场景 在各种自动化系统…...
6.continue break
6.1continue 关键字 continue 关键字用于立即跳出本次循环,继续下一次循环(本次循环体continue之后的代码会少执行一次)。 例如:吃5个包子,第3个有虫子,就扔掉第3个包子,继续吃第4个第5个包子…...
如何在Linux中强制关闭卡住的PyCharm
在使用PyCharm进行Python开发时,有时可能会遇到卡顿或无响应的情况。当PyCharm卡住时,我们需要强制关闭它以恢复正常操作。今天,我们将介绍在Linux系统中如何强制关闭PyCharm的几种方法。 1. 使用键盘快捷键 在PyCharm所在的窗口中…...
c# Excel数据的导出与导入
搬运:Datagrideview 数据导出Excel , Exel数据导入 //------------------------------------------------------------------------------------- // All Rights Reserved , Copyright (C) 2013 , DZD , Ltd . //----------------------------------------------------------…...

Kotlin~Mediator中介者模式
概念 创建一个中介来降低对象之间的耦合度,关系”多对多“变为“一对多”。 角色介绍 Mediator:抽象中介者,接口或者抽象类。ConcreteMediator:中介者具体实现,实现中介者接口,定义一个List管理Colleagu…...
石子合并问题
一.试题 在一个园形操场的四周摆放N堆石子(N≤100),现要将石子有次序地合并成一堆。规定 每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 编一程序,由文件读入…...
剑指Offer-搜索与回溯算法
文章目录 剑指 Offer 32 - I. 从上到下打印二叉树题意:解:代码: 剑指 Offer 32 - II. 从上到下打印二叉树 II题意:解:代码: 剑指 Offer 32 - III. 从上到下打印二叉树 III题意:解:代…...

【云原生】Docker 详解(三):Docker 镜像管理基础
Docker 详解(三):Docker 镜像管理基础 1.镜像的概念 镜像可以理解为应用程序的集装箱,而 Docker 用来装卸集装箱。 Docker 镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动容器。 Dock…...

SD-MTSP:蜘蛛蜂优化算法SWO求解单仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)
一、蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法(Spider wasp optimizer,SWO)由Mohamed Abdel-Basset等人于2023年提出,该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为,具有搜索速度快,求解精度高的优势。蜘蛛蜂优化算…...
【ARM 嵌入式 编译系列 3.1 -- GCC __attribute__((used)) 使用】
文章目录 __attribute__((used)) 属性介绍代码演示编译与输出GCC 编译选项 上篇文章:ARM 嵌入式 编译系列 3 – GCC attribute((weak)) 弱符号使用 下篇文章:ARM 嵌入式 编译系列 3.2 – glibc 学习 __attribute__((used)) 属性介绍 在普通的 C/C 程序中…...

C++ ModBUS TCP客户端工具 qModMaster 介绍及使用
qModMaster工具介绍 QModMaster是一个基于Qt的Modbus主站(Master)模拟器,用于模拟和测试Modbus TCP和RTU通信。它提供了一个直观的图形界面,使用户能够轻松设置和发送Modbus请求,并查看和分析响应数据。 以下是QModM…...

笔记本电脑如何把sd卡数据恢复
在使用笔记本电脑过程中,如果不小心将SD卡里面的重要数据弄丢怎么办呢?别着急,本文将向您介绍SD卡数据丢失常见原因和恢复方法。 ▌一、SD卡数据丢失常见原因 - 意外删除:误操作或不小心将文件或文件夹删除。 - 误格式化&#…...

【2023 华数杯全国大学生数学建模竞赛】 B题 不透明制品最优配色方案设计 39页论文及python代码
【2023 华数杯全国大学生数学建模竞赛】 B题 不透明制品最优配色方案设计 39页论文及python代码 1 题目 B 题 不透明制品最优配色方案设计 日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此,不透明制品的配色对其外观美观度和市场竞争力起着重要作用。…...

Exams/ece241 2013 q4
蓄水池问题 S3 S2 S1 例如:000 代表 无水 ,需要使FR3, FR2, FR1 都打开(111) S3 S2 S1 FR3 FR2 FR1 000 111 001 011 011 001 111 000 fr代表水变深为…...

Android OkHttp源码分析--分发器
OkHttp是当下Android使用最频繁的网络请求框架,由Square公司开源。Google在Android4.4以后开始将源码中 的HttpURLConnection底层实现替换为OKHttp,同时现在流行的Retrofit框架底层同样是使用OKHttp的。 OKHttp优点: 1、支持Http1、Http2、Quic以及Web…...

大数据面试题:说下Spark中的Transform和Action,为什么Spark要把操作分为Transform和Action?
面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答:Spark常见的算子介绍一下 参考答案: 我们先来看下Spark算子的作用: 下图描述了Spark在运行转换中通过算…...

【图像去噪的扩散滤波】基于线性扩散滤波、边缘增强线性和非线性各向异性滤波的图像去噪研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
python函数、运算符等简单介绍2(无顺序)
list(列表) 列表是Python的一种内置数据类型,列表是可以装各种数据类 型的容器 # 第一种list创建方式 list_name [晓东,小刚,明明,小红,123,123.4,123] print(list_name) print(type(list_name)) # 输出结果: [晓东, 小刚, 明明…...
k8s 自身原理 3
前面有分享到 master 主节点上的 四个组件,etcd,ApiServer,scheduler,controller manager 接下来我们分享一波 woker 节点上的组件,xdm 还记得 worker 节点上都有什么吗? kubeletkube-proxy实际的服务对应…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...