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

news2024/11/25 6:32:07

目录

一、文件处理工具

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://www.coloradmin.cn/o/1444770.html

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

相关文章

利用Python和pandas库进行股票技术分析:移动平均线和MACD指标

利用Python和pandas库进行股票技术分析:移动平均线和MACD指标 介绍准备工作数据准备计算移动平均线计算MACD指标结果展示完整代码演示 介绍 在股票市场中,技术分析是一种常用的方法,它通过对股票价格和交易量等历史数据的分析,来…

LeetCode Python - 9.回文数

文章目录 题目答案运行结果 题目 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如&am…

Python基础语法(内置Python, pycharm配置方式)

一.工具安装与配置 1.Python解释器的安装 官网网址:https://www.python.org/ 选择downloads即可(Windows用户点击Windows, 苹果用户点击macOS) 找到最新版本, 并选择 Download Windows installer (64-bit) 下载完成后可在得到一个安装包进行安装(安装时间较长) 安装完成后…

Stable Diffusion 模型下载:DreamShaper(梦想塑造者)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 DreamShaper 是一个分格多样的大模型,可以生成写实、原画、2.5D 等多种图片,能生成很棒的人像和风景图。 条目内容类型大模型基础模型SD 1…

C++多态:定义、实现及原理/继承关系中的虚函数表

目录​​​​​​​ 一、多态的定义及实现 1.1多态的概念​​​​​​​ 1.2多态的构成条件 1.3virtual虚函数 1.4虚函数的重写 二、override和final 三、抽象类 3.1概念 3.2接口继承和实现继承 四、多态的原理 4.1虚函数表 4.2 多态的原理 4.3动态绑定与静态绑定…

自动化AD域枚举和漏洞检测脚本

linWinPwn 是一个 bash 脚本,可自动执行许多 Active Directory 枚举和漏洞检查。该脚本基于很多现有工具实现其功能,其中包括:impacket、bloodhound、netexec、enum4linux-ng、ldapdomaindump、lsassy、smbmap、kerbrute、adidnsdump、certip…

华为OD机试 - 最长子字符串的长度(一) (Python C C++ JavaGo JS PHP)

题目描述 给定一个字符串s,将其视为环形,要求找出其中出现偶数次的最长子字符串的长度。 输入描述 输入一个字符串s。 输出描述 输出一个整数,表示出现偶数次的最长子字符串的长度。 示例 解析题目 本题要求在给定的字符串中找出出现偶…

OpenCV入门:图像处理的基石

在数字图像处理领域,OpenCV(开源计算机视觉库)是一个不可或缺的工具。它包含了一系列强大的算法和函数,使得开发者可以轻松地处理图像和视频数据。本文将带你走进OpenCV的世界,了解其基本概念和常见应用。 1. OpenCV简…

Java 集合、迭代器

Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queu…

【EAI 015】CLIPort: What and Where Pathways for Robotic Manipulation

论文标题:CLIPort: What and Where Pathways for Robotic Manipulation 论文作者:Mohit Shridhar1, Lucas Manuelli, Dieter Fox1 作者单位:University of Washington, NVIDIA 论文原文:https://arxiv.org/abs/2109.12098 论文出处…

sheng的学习笔记-docker部署springboot

部署文章目录:目录 docker部署,原理,命令,可以参考:docker原理图,部署,命令 目录 将springboot部署到docker中 遇到过的问题: pom配置 操作步骤 生成jar 构建镜像 查看镜像d…

C语言之预处理详解

目录 1. 预定义符号2. #define定义常量3. #define定义宏练习 4. 带有副作用的宏参数5. 宏替换的规则6. 宏函数的对比宏和函数的一个对比 7. #和###运算符##运算符 8. 命名约定9. #undef10. 命令行定义11. 条件编译常见的条件编译 12. 头文件的包含头文件的包含方式库文件包含嵌…

移动端web开发布局

目录 flex布局: flex布局父项常见属性: flex布局子项常见属性: REM适配布局: 响应式布局: flex布局: 需要先给父类盒子设置display:flex flex是flexiblebox的缩写,意为"弹…

【DC渗透系列】DC-4靶场

主机发现 arp-scan -l┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:6b:ed:27, IPv4: 192.168.100.251 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.100.1 00:50:56:c0:00:08 …

【人工智能教育】“奇幻森林里的决战:小明‘剑’指期末,勇闯试卷迷宫

在智慧校园的奇幻乐园中,教育的故事不再局限于传统的粉笔与黑板,而是跃然于光影之间,流淌于数据之海。小明和他的同学们正是这个新世界的探险者,他们手握名为“智能辅导助手”的魔法棒,勇闯知识的迷宫。每当他们在力学…

sheng的学习笔记-网络爬虫scrapy框架

基础知识: scrapy介绍 何为框架,就相当于一个封装了很多功能的结构体,它帮我们把主要的结构给搭建好了,我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据,提取数据的框架,我们熟知爬虫总…

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

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

JavaScript 遍历文档生成目录结构

JavaScript 遍历文档生成目录结构 要遍历 HTML 文档并生成目录结构&#xff0c;你可以使用 JavaScript 来进行 DOM 操作和遍历。以下是一个简单的示例代码&#xff0c;演示了如何遍历文档中的标题元素&#xff08;例如 <h1>、<h2>、<h3> 等&#xff09;&…

c++求三个数中最大数

#include<iostream> using namespace std; int main() { int a,b,c; cout<<"请输入三个数字"<<endl;//end后面为小写的L cin>>a>>b>>c; if(a>b&&a>c) cout<<"最大数为a:"<<a<<e…

vulnhub-->hacksudo-Thor靶机详细思路

目录 1. IP探测2.端口服务扫描3.网站漏洞扫描4.目录扫描5.信息分析6.破壳漏洞(Shellshock)nmap---漏洞检测CVE-2014-6271 7.nc反弹8.提权9.service提权 1. IP探测 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:10:3c:9b, IPv4: 19…