当前位置: 首页 > news >正文

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的内置函数&#xff1a;getline 1.7 文本过滤打印 1.8 awk条件判断打印 1.9 三元表达式&#xff0c;类似于java 1.10 awk的精确筛选 1.11 awk和tr比较改变…...

探索FSM (有限状态机)应用

有限状态机&#xff08;FSM&#xff09; 是计算机科学中的一种数学模型&#xff0c;可用于表示和控制系统的行为。它由一组状态以及定义在这些状态上的转换函数组成。FSM 被广泛用于计算机程序中的状态机制。 有限状态机&#xff08;FSM&#xff09;应用场景 在各种自动化系统…...

6.continue break

6.1continue 关键字 continue 关键字用于立即跳出本次循环&#xff0c;继续下一次循环&#xff08;本次循环体continue之后的代码会少执行一次&#xff09;。 例如&#xff1a;吃5个包子&#xff0c;第3个有虫子&#xff0c;就扔掉第3个包子&#xff0c;继续吃第4个第5个包子…...

如何在Linux中强制关闭卡住的PyCharm

在使用PyCharm进行Python开发时&#xff0c;有时可能会遇到卡顿或无响应的情况。当PyCharm卡住时&#xff0c;我们需要强制关闭它以恢复正常操作。今天&#xff0c;我们将介绍在Linux系统中如何强制关闭PyCharm的几种方法。 1. 使用键盘快捷键 在PyCharm所在的窗口中&#xf…...

c# Excel数据的导出与导入

搬运:Datagrideview 数据导出Excel , Exel数据导入 //------------------------------------------------------------------------------------- // All Rights Reserved , Copyright (C) 2013 , DZD , Ltd . //----------------------------------------------------------…...

Kotlin~Mediator中介者模式

概念 创建一个中介来降低对象之间的耦合度&#xff0c;关系”多对多“变为“一对多”。 角色介绍 Mediator&#xff1a;抽象中介者&#xff0c;接口或者抽象类。ConcreteMediator&#xff1a;中介者具体实现&#xff0c;实现中介者接口&#xff0c;定义一个List管理Colleagu…...

石子合并问题

一&#xff0e;试题 在一个园形操场的四周摆放N堆石子&#xff08;N≤100&#xff09;&#xff0c;现要将石子有次序地合并成一堆。规定 每次只能选相邻的两堆合并成新的一堆&#xff0c;并将新的一堆的石子数&#xff0c;记为该次合并的得分。 编一程序&#xff0c;由文件读入…...

剑指Offer-搜索与回溯算法

文章目录 剑指 Offer 32 - I. 从上到下打印二叉树题意&#xff1a;解&#xff1a;代码&#xff1a; 剑指 Offer 32 - II. 从上到下打印二叉树 II题意&#xff1a;解&#xff1a;代码&#xff1a; 剑指 Offer 32 - III. 从上到下打印二叉树 III题意&#xff1a;解&#xff1a;代…...

【云原生】Docker 详解(三):Docker 镜像管理基础

Docker 详解&#xff08;三&#xff09;&#xff1a;Docker 镜像管理基础 1.镜像的概念 镜像可以理解为应用程序的集装箱&#xff0c;而 Docker 用来装卸集装箱。 Docker 镜像含有启动容器所需要的文件系统及其内容&#xff0c;因此&#xff0c;其用于创建并启动容器。 Dock…...

SD-MTSP:蜘蛛蜂优化算法SWO求解单仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为&#xff0c;具有搜索速度快&#xff0c;求解精度高的优势。蜘蛛蜂优化算…...

【ARM 嵌入式 编译系列 3.1 -- GCC __attribute__((used)) 使用】

文章目录 __attribute__((used)) 属性介绍代码演示编译与输出GCC 编译选项 上篇文章&#xff1a;ARM 嵌入式 编译系列 3 – GCC attribute((weak)) 弱符号使用 下篇文章&#xff1a;ARM 嵌入式 编译系列 3.2 – glibc 学习 __attribute__((used)) 属性介绍 在普通的 C/C 程序中…...

C++ ModBUS TCP客户端工具 qModMaster 介绍及使用

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

笔记本电脑如何把sd卡数据恢复

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

【2023 华数杯全国大学生数学建模竞赛】 B题 不透明制品最优配色方案设计 39页论文及python代码

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

Exams/ece241 2013 q4

蓄水池问题 S3 S2 S1 例如&#xff1a;000 代表 无水 &#xff0c;需要使FR3, FR2, FR1 都打开&#xff08;111&#xff09; S3 S2 S1 FR3 FR2 FR1 000 111 001 011 011 001 111 000 fr代表水变深为…...

Android OkHttp源码分析--分发器

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

大数据面试题:说下Spark中的Transform和Action,为什么Spark要把操作分为Transform和Action?

面试题来源&#xff1a; 《大数据面试题 V4.0》 大数据面试题V3.0&#xff0c;523道题&#xff0c;679页&#xff0c;46w字 可回答&#xff1a;Spark常见的算子介绍一下 参考答案&#xff1a; 我们先来看下Spark算子的作用&#xff1a; 下图描述了Spark在运行转换中通过算…...

【图像去噪的扩散滤波】基于线性扩散滤波、边缘增强线性和非线性各向异性滤波的图像去噪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

python函数、运算符等简单介绍2(无顺序)

list&#xff08;列表&#xff09; 列表是Python的一种内置数据类型&#xff0c;列表是可以装各种数据类 型的容器 # 第一种list创建方式 list_name [晓东,小刚,明明,小红,123,123.4,123] print(list_name) print(type(list_name)) # 输出结果&#xff1a; [晓东, 小刚, 明明…...

k8s 自身原理 3

前面有分享到 master 主节点上的 四个组件&#xff0c;etcd&#xff0c;ApiServer&#xff0c;scheduler&#xff0c;controller manager 接下来我们分享一波 woker 节点上的组件&#xff0c;xdm 还记得 worker 节点上都有什么吗&#xff1f; kubeletkube-proxy实际的服务对应…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...