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

shell 脚本工具(三剑客)

第一个:awk

awk 是一种强大的文本处理工具和编程语言,最初由 Alfred Aho、Peter Weinberger 和 Brian Kernighan 在20世纪70年代早期创建。awk 的名称来自于这三位创造者的姓氏的首字母。它在 Unix 和类 Unix 操作系统中广泛使用,用于处理、分析、转换和报告文本数据。以下是关于 awk 的详细介绍:

1. 工作原理: awk 的工作原理是逐行读取文本文件(或输入数据),将每一行拆分成字段,并允许用户定义条件和操作来处理这些字段。它的处理过程通常包括三个步骤:

  • 读取输入数据行。
  • 根据用户指定的条件(称为模式)判断是否应该对该行执行操作。
  • 如果模式匹配,则执行用户定义的操作。

2. 基本语法: awk 命令的基本语法如下:

awk 'pattern { action }' input_file
  • pattern 是一个条件,用于匹配输入数据的某些行。
  • action 是在满足条件的行上执行的操作。
  • input_file 是要处理的输入文件。

. 内置变量和函数: awk 提供了许多内置变量和函数,用于执行各种操作,如处理字段、数学运算、字符串处理等。一些常用的内置变量包括 $0(整个当前行)、$1$2(第一个和第二个字段),而一些常用的内置函数包括 length()(获取字符串长度)、gsub()(全局替换)、sprintf()(格式化输出)等。

4. 常见用途: awk 在文本处理中非常有用,可用于执行以下任务:

  • 数据提取:从文本文件中提取特定字段或行。
  • 数据转换:修改文本数据的格式或结构。
  • 数据统计:对数据进行计数、求和、平均等数学运算。
  • 报告生成:生成报告、摘要或汇总信息。
  • 文本过滤:根据条件过滤文本行。

5. 示例: 以下是一些 awk 的示例用法:

  • 打印文件的第一列:awk '{ print $1 }' data.txt
  • 统计文件的行数:awk 'END { print NR }' data.txt
  • 替换文件中的字符串:awk '{ gsub("old", "new"); print }' data.txt

awk 的强大之处在于其灵活性和可编程性,允许用户根据不同的文本处理需求编写复杂的脚本。它是 Unix 系统中的一个重要工具,可用于处理各种文本数据,从日志文件到数据报告再到配置文件。

awk文件处理常见用例

1.数据提取:从文本文件中提取特定字段或行。

# 提取文件的第二列数据
awk '{ print $2 }' data.txt

2.数据转换:修改文本数据的格式或结构。

# 将逗号分隔的数据转换为制表符分隔
awk 'BEGIN { FS=","; OFS="\t" } { print }' data.csv

3.数据统计:对数据进行计数、求和、平均等数学运算。

# 统计文件的行数
awk 'END { print NR }' data.txt# 计算文件的列平均值
awk '{ sum += $1 } END { print sum / NR }' data.txt

4.报告生成:生成报告、摘要或汇总信息。

# 生成文件的摘要统计信息
awk '{ sum += $1 } END { print "Total: " sum; print "Average: " sum/NR }' data.txt

5.文本过滤:根据条件过滤文本行。

# 过滤包含特定关键词的行
awk '/pattern/ { print }' data.txt

6.字段操作:处理字段,例如合并、拆分、排序等。

# 合并文件的第一列和第二列,用制表符分隔
awk '{ print $1 "\t" $2 }' data.txt# 根据第三列对文件进行排序
awk '{ lines[NR] = $0 } END { for (i = 1; i <= NR; i++) print lines[i] | "sort -k3,3" }' data.txt

7.查找最大/最小值:查找文本中某列的最大或最小值。

# 查找文件中第二列的最大值
awk 'max < $2 { max = $2 } END { print "Max: " max }' data.txt

8.文本替换:根据匹配模式替换文本。

# 替换文本文件中的字符串
awk '{ gsub("old", "new"); print }' data.txt

9.分组和汇总:根据某一列的值进行分组并进行统计。

# 根据第一列的值进行分组并计算每组的总和
awk '{ sum[$1] += $2 } END { for (group in sum) print group, sum[group] }' data.txt

第二个:grep

grep 是一个强大的命令行工具,用于在文本文件中搜索匹配某个模式或正则表达式的行,并将匹配到的行打印出来。它的名称来自于 "Global Regular Expression Print" 的缩写。grep 在 Unix 和类 Unix 操作系统中广泛使用,是文本处理和搜索的重要工具之一。

以下是有关 grep 的详细介绍:

基本语法: grep 的基本语法如下:

grep [options] pattern [file...]
  • pattern 是您要搜索的模式或正则表达式。
  • file 是要搜索的文件的名称。如果不提供文件名,则 grep 将从标准输入读取数据。

常用选项:

  • -i:忽略大小写,使搜索不区分大小写。
  • -r-R:递归搜索指定目录下的文件。
  • -v:反向搜索,只打印不匹配模式的行。
  • -l:只打印包含匹配模式的文件名,而不是行。
  • -n:打印匹配行的行号。
  • -c:只计算匹配行的数量,而不是打印匹配的行。
  • -A num:打印匹配行后的 num 行。
  • -B num:打印匹配行前的 num 行。
  • -C num:打印匹配行前后各 num 行。

grep常用命令举例

1.简单搜索:搜索文件中包含指定文本的行。

grep "pattern" file.txt

2.忽略大小写:搜索时不区分大小写。

grep -i "pattern" file.txt

3.递归搜索:在指定目录及其子目录中搜索。

grep -r "pattern" /path/to/directory

4.反向搜索:打印不匹配模式的行。

grep -v "pattern" file.txt

5.打印文件名:只打印包含匹配模式的文件名。

grep -l "pattern" directory/*.txt

6.计算匹配数量:只显示匹配行的数量。

grep -c "pattern" file.txt

7.打印行号:显示匹配行的行号。

grep -n "pattern" file.txt

8.上下文打印:打印匹配行前后的行。

grep -A 2 -B 2 "pattern" file.txt

9.使用正则表达式:使用正则表达式进行模式匹配。

grep "^[0-9]*$" numbers.txt

10.搜索特定文件类型:在文件名匹配的文件中搜索。

grep "pattern" *.log

11.查找目录中的文件名:搜索文件名而不是文件内容。

ls /path/to/directory | grep "keyword"

12.排除匹配:使用 -v 选项排除特定模式的行。

grep -v "exclude_pattern" file.txt

13.搜索压缩文件:在压缩文件中搜索匹配内容。

zgrep "pattern" compressed_file.gz

14.逐行读取输入:从标准输入读取数据并搜索。

echo "data1\ndata2\ndata3" | grep "data2"

相关文章:

shell 脚本工具(三剑客)

第一个&#xff1a;awk awk 是一种强大的文本处理工具和编程语言&#xff0c;最初由 Alfred Aho、Peter Weinberger 和 Brian Kernighan 在20世纪70年代早期创建。awk 的名称来自于这三位创造者的姓氏的首字母。它在 Unix 和类 Unix 操作系统中广泛使用&#xff0c;用于处理、…...

基于微信小程序的智能垃圾分类回收系统,附源码、教程

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 1 简介 视频演示地址&#xff1a; 基于微信小程序的智能垃圾分类回收系统&#xff0c;可作为毕业设计 小…...

【C++进阶】:AVL树(平衡因子)

AVL树 一.概念二.插入1.搜索二叉树2.平衡因子 三.旋转1.更新平衡因子2.旋转1.左单旋2.右单旋3.先右旋再左旋4.先左旋再右旋 四.完整代码 一.概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元…...

Python教程33:关于在使用zipfile模块,出现中文乱码的解决办法

zipfile是Python标准库中的一个模块&#xff0c;zipfile里有两个class, 分别是ZipFile和ZipInfo&#xff0c;用来创建和读取zip文件&#xff0c;而ZipInfo是存储的zip文件的每个文件的信息的。ZIP文件是一种常见的存档文件格式&#xff0c;它可以将多个文件和目录压缩为一个文件…...

【疑难杂症】使用xshell连接云服务器连接不上

目录 【1】使用xshell连接云服务器连接不上 【1.1】解决方法一 【1.2】解决方法二 【1】使用xshell连接云服务器连接不上 Centos7使用xshell连接提示"ssh服务器拒绝了密码 请再试一次"。 问题如图所示&#xff0c;新安装了一台Centos7服务器&#xff0c;使用ssh连…...

Qt MinGW / MSVC

MinGW/MSVC的关系 MinGW / MSVC.dll / .lib / .a 的关系 MinGW / MSVC Qt 中有两种方式编译&#xff1a;一种是MinGW &#xff0c;另一种MSVC&#xff0c;是两种不同的编译器。 MinGW(Minimalist GNUfor Windows)&#xff0c;它是一个可自由使用和自由发布的Windows特定头文件…...

【数学建模】数据预处理

为什么需要数据预处理 数学建模是将实际问题转化为数学模型来解决的过程&#xff0c;而数据预处理是数学建模中非常重要的一步。以下是为什么要进行数据预处理的几个原因&#xff1a; 数据质量&#xff1a;原始数据往往存在噪声、异常值、缺失值等问题&#xff0c;这些问题会对…...

VMware 安装 黑群晖7.1.1-42962 DS918+

本例的用的文件 1、ARPL 1.0beat 引导文件 vmdk格式&#xff1a; https://download.csdn.net/download/mshxuyi/88309308 2、DS918_42962.pat&#xff1a;https://download.csdn.net/download/mshxuyi/88309383 一、引导文件 1、创建一个虚拟机 2、下一步&#xff0c;选稍后…...

OpenCV(二十九):图像腐蚀

1.图像腐蚀原理 腐蚀操作的原理是将一个结构元素&#xff08;也称为核或模板&#xff09;在图像上滑动&#xff0c;并将其与图像中对应位置的像素进行比较。如果结构元素的所有像素与图像中对应位置的像素都匹配&#xff0c;那么该位置的像素值保持不变。如果结构元素的任何一个…...

【网络知识点】三次握手和四次挥手

文章目录 一、三次握手二、四次挥手 一、三次握手 三次握手的原理如下&#xff1a; 客户端向服务器发送一个SYN&#xff08;同步&#xff09;包&#xff0c;其中包含一个随机生成的初始序列号&#xff08;ISN&#xff09;。 服务器收到SYN包后&#xff0c;会发送一个SYNACK&…...

CSS整理

目录 CSS中的& 弹性&#xff08;display:flex&#xff09;布局 flex的对齐方式 justify-content align-items flex-wrap 弹性盒换行 flex:1 flex属性 flex-grow&#xff1a;项目的放大比例 flex-shrink&#xff1a;收缩 flex-basis&#xff1a;初始值&#xff…...

OpenCV 06(图像的基本变换)

一、图像的基本变换 1.1 图像的放大与缩小 - resize(src, dsize, dst, fx, fy, interpolation) - src: 要缩放的图片 - dsize: 缩放之后的图片大小, 元组和列表表示均可. - dst: 可选参数, 缩放之后的输出图片 - fx, fy: x轴和y轴的缩放比, 即宽度和高度的缩放比. - …...

Java 中的日期时间总结

前言 大家好&#xff0c;我是 god23bin&#xff0c;在日常开发中&#xff0c;我们经常需要处理日期和时间&#xff0c;日期和时间可以说是一定会用到的&#xff0c;现在总结下 Java 中日期与时间的基本概念与一些常用的用法。 基本概念 日期&#xff08;年月日&#xff0c;某…...

创建10个线程并发执行(STL/Windows/Linux)

C并发编程入门 目录 STL 写法 #include <thread> #include <iostream> using namespace std;void thread_fun(int arg) {cout << "one STL thread " << arg << " !" << endl; }int main(void) {int thread_count 1…...

三、创建各个展示模块组件

简介 在文件 components 中创建轮播模块组件,引入App.vue展示。欢迎访问个人的简历网站预览效果 本章涉及修改与新增的文件:First.vue、Second.vue、Third.vue、Fourth.vue、Fifth.vue、App.vue、vite-env.d.ts、assets 一、修改vite-env.d.ts文件 /// <reference type…...

推荐一款程序员截图神器!

快来看一下程序员必备的一款截图工具 今天就来和大家说一下作为程序员必备截图神器&#xff0c;几乎每一个程序员都会设置开机自启&#xff0c;因为这个截图功能太太太好用了&#xff01;&#xff01;&#xff01;只要你在键盘上按下F1就可以轻松截取整个屏幕&#xff0c;然后…...

无涯教程-JavaScript - IMCSC函数

描述 IMCSC函数以x yi或x yj文本格式返回复数的余割。 复数的余割定义为正弦的倒数。即 余割(z) 1 /正弦(z) 语法 IMCSC (inumber)争论 Argument描述Required/OptionalInumberA complex number for which you want the cosecant.Required Notes Excel中的复数只是简单…...

Ubuntu22.04 LTS 显卡相关命令

第一部分查看驱显卡信息 一、查看显卡型号 # -i表示不区分大小写 lspci | grep -i nvidia # 必须安装好nvidia驱动 nvidia-smi -L 二、查看显卡驱动版本 cat /proc/driver/nvidia/version 三、查看CUDA、cuDNN版本 # 或者 nvcc -V&#xff08;两个显示的版本一致&#xf…...

《TCP/IP网络编程》阅读笔记--基于 TCP 的半关闭

目录 1--基于TCP的半关闭 1-1--TCP单方面完全断开的问题 1-2--shutdown()函数 1-3--半关闭的必要性 2--基于半关闭的文件传输程序 1--基于TCP的半关闭 1-1--TCP单方面完全断开的问题 Linux 系统中的 close 函数会将 TCP Socket 的连接完全断开&#xff0c;这意味着不能收…...

Rust的模块化

Rust的模块化要从Rust的入口文件谈起。 Rust的程序的入口文件有两个 如果程序类型是可执行应用&#xff0c;入口文件是main.rs&#xff1b;如果程序类型是库&#xff0c;入口文件是lib.rs&#xff1b; 入口文件中&#xff0c;必须声明本地模块&#xff0c;否则编译器在编译过…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档&#xff1f;从规划到实践的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...

起重机起升机构的安全装置有哪些?

起重机起升机构的安全装置是保障吊装作业安全的关键部件&#xff0c;主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理&#xff1a; 一、超载保护装置&#xff08;核心安全装置&#xff09; 1. 起重量限制器 功能&#xff1a;实时监测起升载荷&a…...