Shell之高效文本处理命令

news/2024/11/3 4:27:53/

目录

一、排序命令—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 的字符
-ttr命令的默认选项,使用 参数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


http://www.ppmy.cn/news/1461886.html

相关文章

【保姆级】生成式网络模型基础知识(图像合成/语音合成/GPT)

生成式模型基础知识 初步接触生成任务 生成任务&#xff0c;顾名思义就是要去生成一个东西&#xff0c;比如生成图片/音频/文字等等。 大家接触最多比如chatGPT、stable diffusion、还有一些语音合成相关的东西。 那么问题来了&#xff0c;具体生成步骤是什么样的&#xff…

学习疲劳(科普)

由于长时间进行学习&#xff0c;在生理和心理方面产生了怠倦&#xff0c;致使学习效率下降&#xff0c;甚至到了不能继续学习的状况。疲劳现象有各种形态&#xff0c;主要可分为生理的&#xff08;或身体的&#xff09;疲劳和心理的疲劳。学习既包括身体的活动,也包括精神的活动…

【SpringBoot篇】基于Redis分布式锁的 误删问题 和 原子性问题

文章目录 &#x1f354;Redis的分布式锁&#x1f6f8;误删问题&#x1f388;解决方法&#x1f50e;代码实现 &#x1f6f8;原子性问题&#x1f339;Lua脚本 ⭐利用Java代码调用Lua脚本改造分布式锁&#x1f50e;代码实现 &#x1f354;Redis的分布式锁 Redis的分布式锁是通过利…

iOS 学习资料

git权威指南 git权威指南 iOS编程实战 iOS编程实战 Objective-C高级编程 iOS和OS X的多线程和内存管理 Objective-C高级编程 iOS和OS X的多线程和内存管理 Effective Objective-C 2.0 编写高质量iOS和OS X代码的52个有效方法 Effective Objective-C 2.0 编写高质量iOS和OS X代码…

Jsp+Servlet实现图片上传和点击放大预览功能(提供Gitee源码)

前言&#xff1a;在最近老项目的开发中&#xff0c;需要做一个图片上传和点击放大的功能&#xff0c;在Vue和SpringBoot框架都有现成封装好的组件和工具类&#xff0c;对于一些上世纪的项目就没这么方便了&#xff0c;所以需要自己用原生的代码去编写&#xff0c;这里分享一下我…

Android 蓝牙实战——蓝牙电话通话状态同步(二十四)

前面分析了蓝牙电话通话状态的广播,我们可以在蓝牙电话中实时监听蓝牙电话的状态,但如果是其他音乐类 APP 呢,在播放的时候也需要知道当前是否有通话正在进行,但是有完全没必要实时监听电话的状态,这就需要一个获取通话状态的方法。 一、通话状态处理 1、CallsManager …

暴利的副业兼职,抖音蓝海赛道,批量复制这个项目,1年200个

在有小孩的家庭中&#xff0c;父母都非常重视孩子的教育&#xff0c;并愿意为此投入大量资金。根据之前的新闻报道&#xff0c;有些父母会毫不犹豫地为孩子花费数千甚至上万元报名参加各种培训课程。尤其是在独生子女家庭中&#xff0c;家长更注重培养孩子的各方面能力。 周周近…

五丰黎红引领新营销模式:布局一物一码数字化营销,提高调味品销量和复购率

调味品行业的销售渠道主要有餐饮、家庭消费和食品加工&#xff0c;按销售额的占比约为6&#xff1a;3&#xff1a;1&#xff0c;餐饮行业是调味品行业的供需主力。在餐饮行业中&#xff0c;“大厨”这一角色具有十分重要的地位。因此&#xff0c;借助大厨的力量成为了许多调味品…