shell脚本之文件处理命令及字符切片处理

目录

一、文件处理工具

1、tr命令

1.1 转换字符

1.2 压缩字符及删除字符

2、seq命令

3、cut命令

​4、tac命令

5、rev命令

6、sort命令

​​​​​7、uniq命令

​8、echo命令

9、date命令

二、字符串切片处理

1、取字符串的长度

2、跳过字符串最前边的字符

3、取字符串最后的字符

4、掐头去尾

5、取倒数的范围

6、删前留后 

7、删后留前

8、查找替换

9、转换大小写


一、文件处理工具

1、tr命令

tr 命令用于转换或删除文件中的字符

tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备

tr  [OPTION]...  SET1  [SET2]
选项说明
-c取补集,即替换除了SET1中指定的字符之外的所有字符
-d删除输入中所有属于SET1的字符
-s缩减连续重复的字符成指定的单个字符
-t替换SET1中的字符为SET2中对应位置的字符
--help

显示程序用法信息

1.1 转换字符

1.2 压缩字符及删除字符

2、seq命令

用于生成一个序列的数字

seq [OPTION]... FIRST INCREMENT LAST
选项说明
-f指定输出格式
-s指定数字之间的分隔符
-w使得生成的数字等宽

3、cut命令

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出

cut  OPTION...  [FILE]...
选项说明
-c按字符位置剪切
-f按字段(以指定的分隔符分隔)剪切
-d指定字段分隔符,默认为制表符
--complement显示未选择的列

#过滤磁盘已用空间大小
[root@localhost ~]#df|grep sda|tr -s " "|cut -d " " -f5|tr -d %
#df命令查看磁盘剩余,然后过滤出/dev/sda1磁盘,再用tr命令将连续的空格压缩成一个空格,再通过cut命令指定以空格为分隔符截取第五列,最后使用tr命令删除%号

#过滤本机IP地址
[root@localhost ~]#ifconfig ens33|tr -s " "|grep netmask|cut -d " " -f3
#先ifconfig指定查看ens33网卡信息,再通过tr命令将连续的空格压缩成一个空格,再过滤出含有netmask的行,最后使用cut命令以空格为分隔符截取第三列

4、tac命令

用于将文本文件逆序输出,即从最后一行开始显示,并向前逐行显示到第一行

tac  [OPTION]...  [FILE]...

5、rev命令

用于将文本文件中的每一行逆序输出,即将每一行的字符顺序颠倒

rev  [OPTION]...  [FILE]...

6、sort命令

用于对文本文件的内容或标准输入的行按字符顺序进行排序

sort  [OPTION]...  [FILE]...
选项说明
-r逆序排序
-R随机排序
-n按数值大小排序
-f忽略大小写排序
-t指定字段分隔符
-u仅显示不重复的行
-k指定按照哪个字段进行排序

​​​​​7、uniq命令

用于过滤或报告文本文件中的重复行

uniq  [OPTION]...  [INPUT [OUTPUT]]
选项说明
-c显示每行重复出现的次数
-d仅显示重复的行
-i在比较行时忽略大小写
-u仅显示不重复的行
-d仅显示重复过的行
-f N忽略前N个字段
#统计日志中重复次数最多的前十个IP地址
[root@localhost data]#cat access_log|cut -d " " -f1|sort -n|uniq -c|sort -rn|head
#先查看日志内容,再以空格为分隔符取第一列的IP地址,再按数值大小进行排序后统计ip重复出现的次数,再按统计过的次数的数值大小倒序排序,最后取前十个IP地址

#统计当前系统共有多少状态
[root@localhost data]#ss -natp|tail -n +2|cut -d " " -f1|sort|uniq -c|wc -l
#先通过ss查看网络系统状况,去除第一行从第二行开始统计,以空格为分隔符取第一列的状态,再用sort排序后用uniq统计每个状态重复的次数,最后使用wc统计有多少状态

#统计当前连接的主机数
[root@localhost data]#ss -nt|tail -n +2|tr -s " "|cut -d " " -f5|cut -d ":" -f1|sort|uniq -c
#先使用ss命令查看当前网络系统状况,再去除第一行从第二行开始统计,再使用tr命令将连续的空格压缩成一个空格,再用cut命令以空格为分隔符截取第五列,再以 : 为分隔符截取第一列,再排序最后统计IP地址重复的次数

8、echo命令

用于在终端输出文本或变量的内容

echo  [OPTION]...  [STRING]
选项说明
-e允许使用转义字符
-n不要在末尾自动换行

9、date命令

用于显示或设置系统的日期和时间

date  [OPTION]...  [+FORMAT]
选项说明
-d显示指定日期/时间的格式
-u显示协调世界时(UTC)时间
-R以RFC 2822格式输出日期和时间
格式FORMAT说明
%F完整日期格式,等价于 %Y-%m-%d
%T时间(24小时制),等于%H:%M:%S
%A当前locale 的星期名全称 (如:星期日)
%B当前locale 的月名全称 (如:一月)
%D按月计的日期;等于%m/%d/%y

二、字符串切片处理

1、取字符串的长度

${#变量名}

2、跳过字符串最前边的字符

#返回字符串变量var中从第m个字符后(不包括第m个字符)的字符开始,到最后的部分,m的取值在0 到 ${#var}-1 之间(bash4.2后,允许为负值)
${var:m}

#返回字符串变量var中从第m个字符后(不包括第m个字符)的字符开始,长度为n的部分
${var:m:n}

3、取字符串最后的字符

#取字符串的最后的n个字符,注:冒号后必须有一空白字符
${var: -n}   #n为正数

4、掐头去尾

#跳过前m字符,一直向后取到距离最后的n个字符之间的字符,即:掐头去尾
${var:m:-length}

5、取倒数的范围

#先从最右侧向左取到n个字符,然后再减去从最右测向左取到的m个字符,最后取到的字符是剩下的字符,且n>m,且-n前必须有空格
${var: -n:-m}  #n,m为正数

6、删前留后 

#懒惰模式,从前往后匹配到第一个word就结束,取第一个word后的所有字符
${var#*word}
 
#贪婪模式,从前往后匹全部word,取最后一个word后的所有字符
${var##*word}

7、删后留前

#懒惰模式,从后往前匹配到第一个word就结束,取第一个word前的所有字符
${var%word*}
 
#贪婪模式,从后往前匹配全部,取最后一个word前的所有字符
${var%%word*}

8、查找替换

${var/pattern/substr}
${变量/搜索的字符串/修改的字符串}
#查找var所表示的字符串中,第一次被pattern所匹配到的字符串,以substr替换之
 
${var//pattern/substr}
#查找var所表示的字符串中,所有能被pattern所匹配到的字符串,以substr替换之
 
${var/#pattern/substr}
#查找var所表示的字符串中,行首被pattern所匹配到的字符串,以substr替换之
# 在此处代表以 # 开头
 
${var/%pattern/substr}
#查找var所表示的字符串中,行尾被pattern所匹配到的字符串,以substr替换之
# 在此处代表以 % 结尾

9、转换大小写

#把var中的所有小写字母转换为大写
${var^^}

#把var中的所有大写字母转换为小写
${var,,}

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

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

相关文章

腾讯云4核8G服务器多少钱?轻量和CVM报价2024新版

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表,轻量应用服务器和CVM云服务器均有活动,云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元,5年6490.44元,标准型SA2服务器1444.8元一年,轻量应用服务器4核8G12M带宽一…

Netty应用(三) 之 NIO开发使用 网络编程 多路复用

目录 重要:logback日志的引入以及整合步骤 5.NIO的开发使用 5.1 文件操作 5.1.1 读取文件内容 5.1.2 写入文件内容 5.1.3 文件的复制 5.2 网络编程 5.2.1 accept,read阻塞的NIO编程 5.2.2 把accept,read设置成非阻塞的NIO编程 5.2.3…

WPF中值转换器的使用

什么是值转换器 在WPF(Windows Presentation Foundation)中,值转换器(Value Converter)是一种机制,允许你在绑定时转换绑定源和绑定目标之间的值。值转换器实现了 IValueConverter 接口,该接口…

SSM实现支付宝沙盒支付

文章目录 沙盒支付准备配置测试 沙盒支付 这里用的支付宝的一个沙盒环境,是支付宝提供给开发者测试用的。 下面主要梳理一下,支付功能的实现,其实还是很简单的,因为支付宝都提供好了,我们只要调用接口去传入参数即可…

【后端高频面试题--Linux篇】

🚀 作者 :“码上有前” 🚀 文章简介 :后端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 后端高频面试题--Linux篇 Windows和Linux的区别?Unix和Linux有什么区别&#xff1f…

【原创 附源码】Flutter安卓及iOS海外登录--Google登录最详细流程

最近接触了几个海外登录的平台,踩了很多坑,也总结了很多东西,决定记录下来给路过的兄弟坐个参考,也留着以后留着回顾。更新时间为2024年2月8日,后续集成方式可能会有变动,所以目前的集成流程仅供参考&#…

代码随想录算法训练营第42天(动态规划04 ● 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集

动态规划part04 01背包问题 二维动态规划五部曲 01背包问题 一维 (没理解动态规划五部曲 416. 分割等和子集解题思路 对于面试的话,其实掌握01背包,和完全背包,就够用了,最多可以再来一个多重背包。 每一件物品其实只有两个状态&a…

使用耳机壳UV树脂制作私模定制耳塞有哪些选择呢?

私模定制耳塞人士的选择可以从以下几个方面考虑: 专业经验:选择有丰富经验的私模定制耳塞人士,能够更好地理解用户需求,提供更专业的建议和服务。可以通过查看其作品和客户评价来了解其经验和口碑。材料质量:选择使用…

模型 AISAS(注意、兴趣、搜索、行动、分享)

系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。消费者行为模型。 1 模型AISAS(注意、兴趣、搜索、行动、分享)的应用 1.1 AISAS用于社交媒体营销 假设我们有一家健身中心,想要通过社交媒体营销来吸引新客户。 A(A…

使用耳机壳UV树脂制作私模定制耳塞有什么优点和缺点呢?

使用耳机壳UV树脂制作私模定制耳塞具有以下优点: 个性化定制:UV树脂可以根据用户的耳型进行个性化定制,使耳塞与用户的耳朵形状完美契合,提高舒适度和佩戴稳定性。高强度和耐磨性:UV树脂具有高强度和耐磨性&#xff0…

宿舍报修|宿舍报修小程序|基于微信小程序的宿舍报修系统的设计与实现(源码+数据库+文档)

宿舍报修小程序目录 目录 基于微信小程序的宿舍报修系统的设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户小程序功能模块 2、学生信息管理 3、维修人员管理 4、故障上报管理 5、论坛信息管理 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&…

C++重新入门-C++ 函数

函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常…

python+flask+django医院预约挂号系统6nrhh

医院预约挂号系统主要有管理员、用户和医生三个功能模块。以下将对这三个功能的作用进行详细的剖析。 技术栈 后端:python 前端:vue.jselementui 框架:django/flask Python版本:python3.7 数据库:mysql5.7 数据库工具…

基于无线传感器网络的LC-DANSE波束形成算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1LC-DANSE算法原理 4.2 LCMV算法原理 5.完整程序 1.程序功能描述 在无线传感器网络中,通过MATLAB对比LC-DANSE波束形成算法和LCMV波束形成算法。对比SNR,mse等指标…

QT学习文件操作类 QFile

(一)QFile QFile 是 Qt 框架中用于文件处理的一个类。它提供了读取和写入文件的功能,支持文本和二进制文件。QFile 继承自 QIODevice ,因此它可以像其他 IO 设备一样使用。 (1)主要功能 1. 文件读写…

深度优先搜索(DFS)与广度优先搜索(BFS):探索图与树的算法

一、引言 在图论和树形结构中,搜索算法是寻找从起点到终点的路径的关键。其中,深度优先搜索(DFS)和广度优先搜索(BFS)是最常用且最基础的两种搜索算法。本文将详细介绍广度优先搜索(BFS&#xf…

CVE-2022-25487 漏洞复现

漏洞描述:Atom CMS 2.0版本存在远程代码执行漏洞,该漏洞源于/admin/uploads.php 未能正确过滤构造代码段的特殊元素。攻击者可利用该漏洞导致任意代码执行。 其实这就是一个文件上传漏洞罢了。。。。 打开之后,/home路由是个空白 信息搜集&…

分享88个鼠标特效,总有一款适合您

分享88个鼠标特效,总有一款适合您 88个鼠标特效下载链接:https://pan.baidu.com/s/1ljcxwgXGpw7baiufUGJjZA?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不…

C++之继承

一,概念及用法 1)概念 首先我们来了解一下官方的概念:继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类&a…

【Linux学习】线程详解

目录 十八.多线程 18.1 线程与进程 18.2 内核视角看待创建线程与进程 18.3 线程优缺点总结 线程的优点: 线程的缺点: 线程的用途: 18.4 线程与进程的联系 十九.线程控制 19.1 POSIX线程库 19.2 线程创建 19.3 线程等待 19.4 线程终止 19.5 线…