Shell脚本应用(四)

news2025/2/24 0:14:50

一、文本处理器

        1、sed工具

        sed (Stream EDitor)是-个强大而简单的文本解析转换工具.可以读取文本.并根据指定的条件对文本内容进行编辑(删除.替换.添加、移动等),最后输出所有行或者仅输出处理的某些行。sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shell脚本中,用以完成各种自动化处理任务。

        2、sed命令常见用法

        通常情况下调用sed 命令有两种格式,如下所示。其中,"参数”是指操作的目标文件.当存在多个操作对象时用,文件之间用逗号“,”分隔;而scriptfile表示脚本文件.需要用“-f”选项指定,当脚本文件出现在目标文件之前时,表示通过指定的脚本文件来处理输入的目标文件。

 常见的sed命令选项主要包含以下几种。
一e 或―—expression=:表示用指定命令或者脚本来处理输入的文本文件。

一f 或—-file=:表示用指定的脚本文件来处理输入的文本文件。
一h 或一—help:显示帮助。
一n、-—quiet或silent:表示仅显示处理后的结果。

一i: 直接编辑文本文件。

        “操作”用于指定对文件操作的动作行为,也就是sed的命令。通常情况下是采用的“[n1[ ,n2]I"操作参数的格式。n1、n2是可选的,不一定会存在.代表选择进行操作的行数,如操作需要在5~20行之间进行.则表示为“5,20动作行为”。常见的操作包括以下几种。

a:增加.在当前行下面增加一行指定内容。

c:替换.将选定行替换为指定内容。
d:删除.删除选定的行。

i:插入,在选定行上面插入一行指定内容。
P:打印如果同时指定行,表示打印指定行;如果不指定行.则表示打印所有内容;如果有非打印字符,则以ASCl码输出。其通常与“-n”选项起使用。
s:替换.替换指定字符。
y:字符转换。

3、用法实例

        (1)输出符合条件的文本

[root@lucky u4]# sed -n 'p' test.txt    //输出所有内容,等同于cat命令
he was short and fat.
He was wearing a blue polo shirt with black pants.
The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.
The year ahead will test our political establishment to the limit.
...........//省略部分内容

[root@lucky u4]# sed -n '3p' test.txt   //输出第三行
The home of Football on BBC Sport online.

[root@lucky u4]# sed -n '3,5p' test.txt  //输出3~5行
The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.

[root@lucky u4]# sed -n 'p;n' test.txt    //输出所有奇数行,n表示读入下一行资料
he was short and fat.
The home of Football on BBC Sport online.
google is the best tools for search keyword.
...........//省略部分内容

[root@lucky u4]# sed -n 'n;p' test.txt    //输出所有偶数行,n表示读入下一行资料
He was wearing a blue polo shirt with black pants.
the tongue is boneless but it breaks bones.12!
The year ahead will test our political establishment to the limit.
a wood cross!
...........//省略部分内容

[root@lucky u4]# sed -n '1,5{p;n}' test.txt     //输出第1~5行之间的奇数行
he was short and fat.
The home of Football on BBC Sport online.
google is the best tools for search keyword.

        (2)替换符合条件的文本

        在使用sed 命令进行替换操作时需要用到s (字符串替换)、c(整行/整块替换).y (字符转换)命令选项,常见的用法如下,

        (3)迁移符合条件的文本 

        其中,H.复制到剪贴板: g.G,将剪贴板中的数据覆盖/追加至指定行;w,保存为文件:r.读取指定文件:a,追加指定内容。

4、awk工具 

        在Linux/UNX系统中,aw是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛应用于Shell 脚本,完成各种自动化配置任务。

(1)awk的常见用法

        通常情况下 awk所使用的命令格式如下所示,其中,单引号加上大括号“彩”用于设置对数据进行的处理动作。awk可以直接处理目标文件,也可以通过“-f”读取脚本对目标文件进行处理。

         前面提到sed 命令常用于--整行的处理,而awk比较倾向于将一行分成多个“字段”然后再进行处理,且默认情况下字段的分隔符为空格或者tab键。awk执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符“&&”,表示“与”,"Il”表示“或","!”表示“非”,还可以进行简单的数学运算.如+、—"、*、/、%."分别表示加.减、乘.除.取余和乘方。

        在Linux系统中/etc/passwd 是一个非常典型的格式化文件.各字段间使用^:"作为分隔符隔开.Linux系统中的大部分日志文件也是格式化文件,从这些文件中提取相关信息是运维的日常工作内容之一。若需要查找出/etc/passwd的用户名.用户ID、组ID等列,执行以下awk命令即可。

[root@lucky u4]# awk -F ':' '{print $1,$3,$4}' /etc/passwd | tail -5
avahi 70 70
postfix 89 89
tcpdump 72 72
mysql 1001 1001
zhangsan 1002 1002

       awk包含几个特殊的内建变量,如下所示

FS:指定每行文本的字段分隔符默认为空格或制表位。

NF:当前处理的行的字段个数。
NR:当前处理的行的行号〔序数)。

sO:当前处理的行的整行内容。
$n:当前处理行的第n个字段(第n列》。

FILENAME:被处理的文件名。
RS:数据记录分隔,默认为\n,即每行为一条记录。

 (3)用法示例

        按行输出文本

按字段输出文本

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)

下载安装HBuilder X编辑器 https://www.dcloud.io/hbuilderx.html 新建 5APP 项目 打开 HBuilder X,新建项目 此处项目名以 ‘test’ 为例 含跨域代理的vue项目改造 若 vue 项目中含跨域代理,如 vue.config.js module.exports {publicPath: "./&…

探索 HTTP 请求的世界:get 和 post 的奥秘(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

【C++项目】ninja报错及解决方法

一、问题描述 C项目中,运行文件时出现以下报错: “ninja: error: ‘D:/Desktop/C Games Chapter 10/10.2 缁ф壙璁块棶鏉冪殑鎺у埗/simple_boss2.cpp’, needed by ‘CMakeFiles/C___Games_Chapter_10_2.dir/10.2_缁ф壙璁块棶鏉冪殑鎺у埗/simple_boss…

基于Java开发的微信约拍小程序

一、系统架构 前端:vue | element-ui 后端:springboot | mybatis 环境:jdk8 | mysql8 | maven | mysql 二、代码及数据库 三、功能说明 01. 首页 02. 授权登录 03. 我的 04. 我的-编辑个人资料 05. 我的-我的联系方式 06. …

基于5G智能网关的智慧塔吊监测方案

塔吊是建筑施工中必不可少的设施,由于塔吊工作重心高、起重载荷大、人工视距/视角受限等因素,也使得塔吊在工作过程中着较多的危险因素。对此,可以部署基于工业5G智能网关搭建智慧塔吊安全监测系统,实现对塔吊运行的全局精细监测感…

电机控制——底软需求

PWM 电机控制输出六路PWM,可分为ABC三相,每相包含上桥和下桥两路,上下桥不可同时打开。 配置的时候,六路PWM要设置为居中对齐模式,正好可以实现PMSM七段式控制法。 配置一路PWM作为基准,六路PWM都引用该基…

YOLOv5 目标计数 | 图片上绘制计数结果

修改方法: 只需要改 detect.py for path, im, im0s, vid_cap, s in dataset: 下新增一行 class_counts = {} class_counts[int(c)] = class_counts.get(int(c

makefile教程(1)

makefile教程 makefile是什么: makefile是用户自行完成的IDE(integrated development environment集成开发环境)程序,与传统的操作系统下的编译不同,makefile可以通过用户自行安排,决定文件的编译顺序&am…

【Java动态代理如何实现】

✅Java动态代理如何实现 ✅JDK动态代理和Cglib动态代理的区别 ✅拓展知识仓✅静态代理和动态代理的区别✅动态代理的用途✅Spring AOP的实现方式📑JDK 动态代理的代码段📑Cglib动态代理的代码块 ✅注意事项: 在Java中,实现动态代理…

泛微OA xmlrpcServlet接口任意文件读取漏洞(CNVD-2022-43245)

CNVD-2022-43245 泛微e-cology XmlRpcServlet接口处存在任意文件读取漏洞&#xff0c;攻击者可利用漏洞获取敏感信息。 1.漏洞级别 中危 2.影响范围 e-office < 9.5 202201133.漏洞搜索 fofa 搜索 app"泛微-OA&#xff08;e-cology&#xff09;"4.漏洞复现 …

大模型做实体识别任务的原理

1、背景 命名实体识别&#xff08;named entity recognition&#xff0c;NER&#xff09;&#xff1a;通常是一个序列标注的任务&#xff0c;常见的模型框架有&#xff1a;LSTM-CRF、BERTBILSTMCRF等&#xff0c;该种任务通常被成为flat NER即&#xff1a;每一个token只分配一…

视频号小店需要多少资金?

我是电商珠珠 视频号团队自22年发展视频号小店以来&#xff0c;为人所知。和抖音电商一样&#xff0c;都是在发展的第二年掀起了浪花。 也就是今年&#xff0c;很多想要入驻的新手&#xff0c;对于视频号小店不太了解&#xff0c;不清楚到底需要多少资金。 今天&#xff0c;…

Unity协程的定义、使用及原理,与线程的区别、缺点全方面解析

目录 协程的定义及简介 协程的用途 定时器 将复杂程序分帧执行 等待某些条件完成后执行后续 异步加载资源 协程的原理 MonoBehaviour中每一帧的游戏循环 迭代器 IEnumerator 接口 具体执行过程 协程和线程的区别 协程的缺点 无法返回值 依赖于MonoBehaviour 维护…

一文让你搞明白文本或代码中 \n 和 \r 的区别

我们使用printf打印时基本都会用到 \n 和 \r 之类控制字符&#xff0c;比如&#xff1a; printf("hello world!\r\n"); 那么&#xff0c;你知道 \n 和 \r 的区别吗&#xff1f; 一、关于 \n 和 \r 在ASCII码中&#xff0c;我们会看到有一类不可显示的字符&#x…

jenkins Job华为云EIP变更带宽

引言: 在数字化时代&#xff0c;云服务资源的弹性管理是企业降低运营成本、提高效率的关键手段。通过弹性公网IP&#xff08;EIP&#xff09;服务&#xff0c;企业可以实现按需计费&#xff0c;优化网络支出。然而&#xff0c;根据业务流量的不同阶段调整计费模式&#xff0c;…

【数据结构】什么是二叉树?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f4cc;二叉树的定义 &#x1f4cc;二叉树的特点 &#x1f4cc;特殊二叉树 &#x1f4cc;二叉树的性质 &#x1f4cc;二叉树的存储结构 &#x1f4cc;二叉树…

路径规划最全综述+代码+可视化绘图(Dijkstra算法+A*算法+RRT算法等)

路径规划综述 1. 背景介绍 路径规划是指在给定的环境中找到从起点到终点的最佳路径的过程。它在现实生活中有着广泛的应用&#xff0c;包括无人驾驶、物流配送、机器人导航等领域。随着人工智能和计算机技术的发展&#xff0c;路径规划技术也在不断地得到改进和应用。 路径规划…

宠物智能喂养系统App重新定义养宠体验

​ 在科技蓬勃发展的当今世界&#xff0c;宠物照顾和护理的更多可能性也随之扩大。宠物智能喂养系统App正改变着我们对宠物看护的传统理解。 一、对宠物用品店的影响 作为一款集成了先进的摄像头、传感器和自动投喂功能的设备&#xff0c;智能喂养系统App使得宠物用品店可以…

龙迅LT8713SX适用于一路Type-C/DP1.4转三路Type-C/DP1.4/HDMI2.0应用方案,分辨率高达4K60HZ,支持SST/MST模式!

1. 概述 LT8713SX是一款高性能Type-C/DP1.4转Type-C/DP1.4/HDMI2.0转换器&#xff0c;具有三个可配置的DP1.4/HDMI2.0/DP输出接口和音频输出接口。LT8713SX支持 DisplayPort™ 单流传输 &#xff08;SST&#xff09; 模式和多流传输 &#xff08;MST&#xff09; 模式。当接收…

【SpringBoot】之Security进阶使用(登陆授权)

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《SpringBoot开发之Security系列》。&#x1f3af…