Shell之高效文本处理命令
目录
一、排序命令—sort
基本语法
常用选项
二、去重命令—uniq
基本语法
常用选项
三、替换命令—tr
基本语法:
常用选项
四、裁剪命令—cut
基本语法:
常用选项
字符串分片
五、拆分命令—split
基本语法:
六、 文件合并命令—paste
基本语法:
常用选项
常用命令
七、扫描命令—eval
实操
一、排序命令—sort
以行为单位,对文件的内容进行排序
基本语法
格式: sort [选项] 参数
常用选项
| -n | 按照数组进行排序 |
| -r | 反向排序 |
| -u | 排序后去重 |
| -t | '字段分隔符' |
| -k | 字段序号 |
| -o<输出文件> | 另保存输出排序的结果(相当于重定向输出) |
| -f | 忽略大小写,把小写字母也当作大写字母看待 |
| -b | 忽略每行前面的空格 |
实操
sort -n #根据数字大小排序
sort -n -r #原本的排序变成倒序排序

sort -u #去重


sort -o cat /etc/passwd|sort -o abc.txt #通过管道符号将查找到的内容进行输出保存cat abc.txt

二、去重命令—uniq
uniq命令用于报告或者忽略文件中连续的重复行,常与sort命令结合使用
基本语法
格式:uniq [选项] 参数
cat 文件| uniq 选项
常用选项
| -c | 对连续的重复行进行去重,并统计重复次数 |
| -u | 仅输出不连续重复的行 |
| -d | 仅输出连续重复的行 |
实操
uniq -c #重复的行计数并去重

uniq -u #显示仅出现一次的行(包括不连续的重复行)

uniq -d #仅显示重复的数字

三、替换命令—tr
常用来对来自标准输入的字符进行替换,压缩,和删除
基本语法:
格式: cat 文件| tr [选项] 参数
常用选项
| -c | 仅保留 参数1 的字符,其它字符(包括\n)都替换成 参数2 的字符 |
| -d | 删除所有 参数1 的字符 |
| -s | 根据 参数1 进行去重,如果有 参数2 则再用 参数2 的字符替换 参数1 的字符 |
| -t | tr命令的默认选项,使用 参数2 的字符替换成 参数1 的字符 |

tr-c
将输入的字符串 "abc" 中不包含字符 "ab" 的部分替换为字符 "a",而包含字符 "ab" 的部分保持不变
tr-c

删除输入字符串中的字符 "a" 和 "b"
tr -s

对文件 "11.txt" 中的内容按照数字进行排序,并且将重复的换行符压缩为一个换行符
tr -t #与默认效果相同
用于windows的编写的脚本格式转换为Linux格
Windows的另起一行格式(\r\n)转换成 Linux的另起一行格式(\n)
cat 文件 | tr -d '\r' > 新文件
四、裁剪命令—cut
对字段进行截取和剪裁
基本语法:
cut [选项] 参数cat file | cut [选项] 参数
常用选项
| -d '分隔符' -f 字段序号 | 根据 -d 指定的分隔符的截取显示 -f 指定的字段 |
| --complement | 取反,不显示 -f 指定的字段 |
| --output-delimiter '分隔符' | 指定输出的字段分隔符 |
字符串分片
echo ${变量:下标:长度} ; #下标起始从0开始echo $变量 | cut -b 起始下标-终止下标 #下标起始从1开始expr substr $变量 起始下标 长度 #下标起始从1开始
五、拆分命令—split
- 用于在Linux下将大文件拆分为若干小文件
-
-l 指定行数分割文件 -b 指定文件的大小分割文件
基本语法:
split 选项 参数 原始文件 拆分后文件名前缀
六、 文件合并命令—paste
按照字段来进行文件的合并
基本语法:
paste [选项] 文件1 文件2
常用选项
| -d '分隔符' | 指定输出的字段分隔符 |
| -s | 将每个列横向输出 |
常用命令
cat 文件1 文件2 ... > 新文件 #合并文件的行
paste -d '分隔符' 文件1 文件2 ... > 新文件 #合并文件的列
[root@localhost ~]# cat a b
1
3
4
5
6
7
11
12
q
a
z
w
s
x
e
c
[root@localhost ~]# paste a b
1 q
3 a
4 z
5 w
6 s
7 x
11 e
12 c
七、扫描命令—eval
- 在命令行执行前,先将命令行里的变量置换成对应的值后,再执行命令
实操
[root@localhost ~]# vim 1.sh
[root@localhost ~]# chmod +x 1.sh
[root@localhost ~]# bash 1.sh
33
66
[root@localhost ~]# vim 1.sh
#!/bin/basha=33
b=a
eval echo \$$b #普通echo输出的变量b的值为
eval $b=66 #经过eval扫描输出变量b的值
echo $a #输出变量a
相关文章:
Shell之高效文本处理命令
目录 一、排序命令—sort 基本语法 常用选项 二、去重命令—uniq 基本语法 常用选项 三、替换命令—tr 基本语法: 常用选项 四、裁剪命令—cut 基本语法: 常用选项 字符串分片 五、拆分命令—split 基本语法: 六、 文件…...
u3d的ab文件注意事项
//----------------LoadAllAB.cs--------------------- using System.Collections;using UnityEngine;namespace System.IO{public class LoadAllAB : MonoBehaviour{ //读取本地string path "Assets/Actors/lznh/ab/animation/t_bl/";// Use this for initiali…...
Go微服务开源框架kratos的依赖注入关系总结
该文章为学习开源微服务框架kratos的学习笔记!官方文档见:简介 | Kratos Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具。 一、Kratos 项目结构简介 通过 Kratos 工具生成的 Go工程化项目模板如下: applicati…...
Linux 第三十二章
🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…...
手机号码的正则表达式
手机号码的正则表达式会根据不同的国家/地区有所不同,因为每个国家/地区都有自己特定的手机号码格式。但是,我可以为你提供一个通用的正则表达式模板,并给出一些具体国家/地区的例子。 通用模板 一个基本的手机号码正则表达式模板可能如下所…...
机器学习入门介绍
各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 目录 三大方向机器学习产生的原因机器如何学习…...
一文说通用户故事点数是什么?
一文说通用户故事点数是什么? 第26期:一文说通用户故事点数是什么? 用户故事点数是一种采用相对估算法进行估算的一种工具,一般采用斐波那契数列表征用户故事里说的大小,采用0 1 2 3 5 8 13这样的一些数字来表征用户…...
GAME101-Lecture07学习
前言 今天主要讲shading(着色)。在讲着色前,要先讲图形中三角形出现遮挡问题的方法(深度缓存或缓冲)。 先采样再模糊错误:对信号的频谱进行翻译(在这期间会有频谱的混叠)ÿ…...
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
看到这句话的时候证明:此刻你我都在努力~ 加油陌生人~ 个人主页: Gu Gu Study 专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努…...
ICSE docker related research
ICSE 2024 Empirical Study of the Docker Smells Impact on the Image Size Docker 气味对镜像大小影响的实证研究 Docker 是一种广泛采用的打包和部署应用程序的工具,它利用 Dockerfile 来构建镜像。然而,创建最佳的 Dockerfile 可能具有挑战性&…...
【C++】学习笔记——多态_1
文章目录 十二、继承8. 继承和组合 十三、多态1. 多态的概念2. 多态的定义和实现虚函数重写的两个特殊情况override 和 final 3. 多态的原理1. 虚函数表 未完待续 十二、继承 8. 继承和组合 我们已经知道了什么是继承,那组合又是什么?下面这种情况就是…...
C++map容器关联式容器
Cmap 1. 关联式容器 vector、list、deque、forward_list(C11)等STL容器,其底层为线性序列的数据结构,里面存储的是元素本身,这样的容器被统称为序列式容器。而map、set是一种关联式容器,关联式容器也是用来存储数据的࿰…...
TS-抽象类和静态成员
目录 1,抽象类1,为什么需要抽象类2,抽象成员3,设计模式-模板模式 2,静态成员1,什么是静态成员2,设计模式-单例模式 1,抽象类 1,为什么需要抽象类 有时,某个…...
SharePoint 使用renderListDataAsStream方法查询list超过5000时的数据
问题: 当SharePoint List里的数据超过5000时,如果使用常用的rest api去获取数据,例如 await this.sp.web.lists.getByTitle(Document Library).rootFolder.files.select(*, listItemAllFields).expand(listItemAllFields).filter(listItemA…...
2024042001-计算机网络 - 物理层
计算机网络 - 物理层 计算机网络 - 物理层 通信方式带通调制 通信方式 根据信息在传输线上的传送方向,分为以下三种通信方式: 单工通信:单向传输半双工通信:双向交替传输全双工通信:双向同时传输 带通调制 模拟信号…...
通过java将数据导出为PDF,包扣合并单元格操作
最近项目中需要将查询出来的表格数据以PDF形式导出,并且表格的形式包含横向行与纵向列的单元格合并操作,导出的最终效果如图所示: 首先引入操作依赖 <!--导出pdf所需包--><dependency><groupId>com.itextpdf</groupId&…...
Java内存模式以及volatile关键字的使用
1.Java内存模型 (1)Java 内存模型(Java Memory Model,简称 JMM),它是一个抽象的概念,JMM是和多线程相关的,它是一组规范,描述了一组规则,定义了多线程对共享…...
每日5题Day3 - LeetCode 11 - 15
每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:11. 盛最多水的容器 - 力扣(LeetCode) class Solution {public int maxArea(int[] height) {//这道题比较特殊,因为两边是任意…...
路由器、交换机和网卡
大家使用VMware安装镜像之后,是不是都会考虑虚拟机的镜像系统怎么连上网的,它的连接方式是什么,它ip是什么? 路由器、交换机和网卡 1.路由器 一般有几个功能,第一个是网关、第二个是扩展有线网络端口、第三个是WiFi功…...
腾讯开源混元DiT文生图模型,消费级单卡可推理
节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
