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,,}

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

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

相关文章

C++入门(上)

文章目录 1:什么是C2.C的发展史3:C关键字(C98)4:命名空间4.1:命名空间的概念4.2:命名空间的定义4.3:命名空间的使用4.3.1加命名空间的名称以及域作用限定符4.3.2:使用using将命名空间中某个成员引入4.3.3:使用using namespace 命名空间名称展开命名空间代码1代码2 5:C输入与输出…

用C语言列出Linux或Unix上的网络适配器

上代码&#xff1a; 1. #include <sys/socket.h> 2. #include <stdio.h> 3. 4. #include <netdb.h> 5. #include <ifaddrs.h> 6. 7. int main() { 8. struct ifaddrs *addresses; 9. if(getifaddrs(&addresses) -1) { 10. printf("…

Linux:信号的保存

文章目录 信号相关概念信号递达信号未决信号阻塞内核中的示意图 信号集的操作函数 前面对于信号的产生中对操作系统有了一个基础的认知&#xff0c;对于一个真正的操作系统来说&#xff0c;进程是由操作系统进行调度的&#xff0c;那操作系统本身也是代码&#xff0c;是由谁进行…

Python并发编程之多线程

前言 本文介绍并发编程中另一个重要的知识 - 线程。 线程介绍 我们知道一个程序的运行过程是一个进程&#xff0c;在操作系统中每个进程都有一个地址空间&#xff0c;而且每个进程默认有一个控制线程&#xff0c;打个比方&#xff0c;在一个车间中有很多原材料通过流水线加工…

MYSQL分区NOW()不支持

传说同事写个复杂的SQL代码,跑一次需要7-10秒, 复杂如上,我也懒得去分析 IF IF IF是怎么回事了! 发现此表是分区表,后面要求加上了分区时间,以便利用到分区裁剪技术. 因为需求是查近10天来到期还款的人和金额.就是今天应该还款的人, 一般还款周期是7天. 给个10天的范围挺可以的…

第3集《佛说四十二章经》

和尚尼慈悲、诸位法师、诸位同学&#xff0c;阿弥陀佛&#xff01; 请大家打开讲议第四面&#xff0c;三、随文释义。 前面讲到本经的修学纲要是顿渐兼收&#xff0c;理事无碍。本经的修学有两个主题&#xff1a; (一)顿教法门&#xff1a; 顿教法门是一种智慧的观照。修学…

腾讯云4核8G服务器多少钱一年?

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

C++:理解拷贝在变量,指针,引用以及构造函数里的意义

变量&#xff0c;指针&#xff0c;引用 //拷贝与拷贝构造函数 //拷贝&#xff08;copy&#xff09;&#xff1a;拷贝数据&#xff0c;拷贝内存 //始终是在拷贝值&#xff0c;但是指针存储的是内存的地址&#xff0c;变量存储的是数据的值 //特别注意&#xff0c;在引用里面的拷…

新年加载中特效 —— 后期需要添加备注和消化

代码来源&#xff1a;链接: https://www.bilibili.com/video/BV1qA4m1573V/?spm_id_from333.880.my_history.page.click&vd_sourceb91967c499b23106586d7aa35af46413 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8&…

数据库管理-第14期 Oracle Vector DB AI-01(20240210)

数据库管理149期 2024-02-10 数据库管理-第149期 Oracle Vector DB & AI-01&#xff08;20240210&#xff09;1 机器学习2 向量3 向量嵌入4 向量检索5 向量数据库5 专用向量数据库的问题总结 数据库管理-第149期 Oracle Vector DB & AI-01&#xff08;20240210&#xf…

ChatGPT高效提问—prompt常见用法(续篇十一)

ChatGPT高效提问—prompt常见用法(续篇十一) 1.1 增加角色 ​ 在prompt里可以适当增加角色,来满足一些特殊场景的需求。先来看一个不带角色的简单示例。 输入prompt: ​ ChatGPT输出: ​ 如上所示,问题比较难,ChatGPT的答案也确实晦涩难懂。试想一下,如果将这个解释将…

猫头虎分享已解决Bug || 日志文件过大(Log File Oversize):LogFileOverflow, ExcessiveLoggingError

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Java:Arrays类、Lambda表达式、JDK新特性(方法引用) --黑马笔记

一、Arrays类 1.1 Arrays基本使用 Arrays是操作数组的工具类&#xff0c;它可以很方便的对数组中的元素进行遍历、拷贝、排序等操作。 下面我们用代码来演示一下&#xff1a;遍历、拷贝、排序等操作。需要用到的方法如下&#xff1a; public class ArraysTest1 {public stat…

【机器学习】数据清洗之识别异常点

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…

IDEA中Git的使用小技巧-Toolbar(工具栏)的设置

目录 1 前言 2 步骤 2.1 打开设置 2.2 找到Menus and Toolbars 2.3 Menus and Toolbars界面的介绍 2.4 选择工具 2.5 查看 1 前言 工具栏的合理运用&#xff0c;能够极大程度上为我们省时省力 &#xff0c;接下来我将以Git工具的添加&#xff0c;介绍如何定制我们IDEA…

C++学习笔记 | 基于Qt框架开发实时成绩显示排序系统1

目标&#xff1a;旨在开发一个用户友好的软件工具&#xff0c;用于协助用户基于输入对象的成绩数据进行排序。该工具的特色在于&#xff0c;新输入的数据将以红色高亮显示&#xff0c;从而直观地展现出排序过程中数据变化的每一个步骤。 结果展示&#xff1a; 本程序是一个基于…

游戏服务器哪家强?国内几款主流云服务器测评

游戏服务器租用多少钱一年&#xff1f;1个月游戏服务器费用多少&#xff1f;阿里云游戏服务器26元1个月、腾讯云游戏服务器32元&#xff0c;华为云26元&#xff0c;游戏服务器配置从4核16G、4核32G、8核32G、16核64G等配置可选&#xff0c;游戏专业服务器公网带宽10M、12M、15M…

决策树之scikit-learn

实例 from sklearn.datasets import load_iris from sklearn import tree import matplotlib.pyplot as plt# Load iris dataset iris load_iris() X, y iris.data, iris.target# Fit the classifier clf tree.DecisionTreeClassifier() clf clf.fit(X, y)# Plot the deci…

python 基础知识点(蓝桥杯python科目个人复习计划37)

今日复习内容&#xff1a;DFS--回溯 1.介绍 回溯&#xff1a;就是DFS是一种&#xff0c;在搜索尝试过程中寻找问题的解&#xff0c;当发现已不满足求解条件时&#xff0c;就“回溯”返回&#xff0c;尝试别的路径。 回溯更强调&#xff1a;此路不通&#xff0c;另寻他路&…

linux系统下vscode portable版本的c++/Cmake环境搭建001

linux系统下vscode portable版本的Cmake环境搭建 vscode portable 安装安装基本工具安装 build-essential安装 CMake final script code安装插件CMake Tools & cmakeC/C Extension Pack Testsettings,jsonCMakeLists.txt调试和运行工具 CG 目的&#xff1a;希望在获得一个新…