文件处理命令

news/2024/10/6 0:43:40

目录
  • 1.sort命令--对行内容进行升序排序
  • 2.uniq命令--对连续的重复行进行去重
  • 3.tr命令--对输入的内容进行替换
    • (1)删除空行
    • (2) Windows的另起一行格式(\r\n)转换成Linux的另起一行格式(\n)
    • (3)对数组排序
  • 4.cut命令--对行内容进行字段截取
  • 5.split命令--linux下将一个大的文件拆分成若干小文件
  • 6.paste命令--用于合并文件的列
  • 7.eval命令

1.sort命令--对行内容进行升序排序

以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序。
比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

XXX | sort 选项
sort 选项 文件
sort [选项] 参数
cat file | sort 选项

常用选项
-n 按照数字进行排序
-r 反向排序
-u 等同于uniq,表示相同的数据仅显示一行
-t 指定字段分隔符,默认使用[Tab]键分隔
-k 指定排序字段
-o <输出文件> 将排序后的结果转存至指定文件
-f 忽略大小写,会将小写字都转换为大写字母来进行比较
-b 忽略每行前面的空格






2.uniq命令--对连续的重复行进行去重

用于报告或者忽略文件中连续的重复行,常与 sort 命令结合使用

XXX | uniq 选项
uniq 选项 文件
uniq [选项] 参数
cat file | uniq 选项

常用选项
-c 进行计数,并删除文件中重复出现的行
-d 仅显示连续的重复行
-u 仅显示出现一次的行

3.tr命令--对输入的内容进行替换

常用来对来自标准输入的字符进行替换、压缩和删除

XXX | tr 选项 '参数1' ['参数2']
tr [选项] [参数]

常用选项
-c 保留字符集1的字符,其他的字符(包括换行符\n)用字符集2替换
-d 删除所有属于字符集1的字符
-s 将重复出现的字符串压缩为一个字符;用字符集2 替换 字符集1
-t 字符集2 替换 字符集1,不加选项同结果。


(1)删除空行

cat 文件 | grep -v "^$"
cat 文件 | tr -s "\n"

(2) Windows的另起一行格式(\r\n)转换成Linux的另起一行格式(\n)

cat 文件 | tr -d '\r' > 新文件
dos2unix 文件




(3)对数组排序

echo ${数组名[@]} | tr ' ' '\n' | sort -rn | tr '\n' ' '

4.cut命令--对行内容进行字段截取

显示行中的指定部分,删除文件中指定字段
XXX | cut 选项 参数
cut 参数
cat file | cut 选项
-d '分隔符' -f 字段序号 #根据 -d 指定的分隔符的截取显示 -f 指定的字段

字符串分片
echo ${变量:下标:长度}                       #下标起始从0开始
echo $变量 | cut -b 起始下标-终止下标        #下标起始从1开始
expr substr $变量 起始下标 长度              #下标起始从1开始
常用选项
-f 通过指定哪一个字段进行提取。cut命令使用“TAB”作为默认的字段分隔符
-d “TAB”是默认的分隔符,使用此选项可以更改为其他的分隔符
--complement 取反,不显示 -f 指定的字段
--output-delimiter '分隔符' 指定输出的字段分隔符




5.split命令--linux下将一个大的文件拆分成若干小文件

常用选项
-l 以行数拆分
–b 以大小拆分
-d 输出的目标文件后缀用数字替代

如何将一个10G文件分割为10个1G的文件

split -b 1G -d 原文件 目标文件名前缀

如何将一个100行文件分割为10个10行的文件

split -l 10 -d 原文件 目标文件名前缀

6.paste命令--用于合并文件的列

paste 选项 文件1 文件2...
paste [-s] [-d <间隔字符>] 文件...

常用选项
-d <间隔字符> 用指定的间隔字符取代制表符
-s 把多行内容合并为一行进行显示
合并文件的行   
cat 文件1 文件2  ... > 新文件合并文件的列   
paste -d '分隔符' 文件1 文件2 ... > 新文件


7.eval命令

命令字前加上eval时,shell会在执行命令之前扫描它两次。eval命令将首先会先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。

eval   在命令行执行前,先将命令行里的变量置换成对应的值后,再执行命令
a=100
b=a
eval echo \$$b  置换成-->  echo $a  执行-> 100
eval $b=50  置换成--> a=50 执行
echo $a -> 50

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

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

相关文章

Django3.2使用xadmin2遇到的问题

使用xadmin2遇到的问题&解决 环境配置: 使用的模块版本:关联的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-reversion >= 2.0.0 django-formto…

NSSCTF round#22逆向

NSSCTF round#22逆向1.wp要及时写不然忘光光 2.赛题分文件夹放ezcrypt 下载下来是python打包的exe,解包出pyc用pycdc反编译看一下嗯不认识BEFORE_WITH命令。丢到gpt4o里看看还蛮准确的,和作者提供的源码一样。不过对填充的处理不对,原程序是填充\x00。不过比自己硬看好太多了…

蓝桥杯-外卖店优先级(简单写法)

“饱了么”外卖系统中维护着 N 家外卖店,编号 1∼N。 每家外卖店都有一个优先级,初始时 (0 时刻) 优先级都为 0。 每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减到 0;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2。 如果某家外卖店某时…

【转载】高可用(HA)集群之pacemaker+corosync

转载地址:https://blog.51cto.com/liheng1815/5637598 高可用(HA)集群之pacemaker+corosync方案0x00 概念 在传统Linux集群种类中,主要分了三类: ​ 一类是LB(负载均衡)集群,这类集群的作用是对用户流量做负载均衡,让其后端每个real-server都能均衡的处理一部分请求;…

Android系统启动流程

在Android中系统的启动流程是一个经常会被问到的问题,那么下面我们通过一张图来说明一下 从上面的图片中可以看到它的一个启动流程. 1.BootLoader首先,当我们点击电源开关后,引导芯片代码开始从预定义的地方(固化在ROM)开始执行。加载引导程序到RAM,然后执行,这时执行的就是…

Linux-文件特殊权限

day13今日安排默写昨日作业讲解文件权限篇综合知识脑图特殊权限(了解)linux提供的12个特殊权限 默认的9位权限 rwx rwx rwx还有三个隐藏的特殊权限,如下 suid 比如 /usr/bin/passwdsgidsbit 特殊权限对照表类别 suid sgid sticky字符表示 S S T出现位置 用户权限位x 用户组…

Golang初学:文件操作,标准库

go version go1.22.1 windows/amd64 Windows 11 + amd64 x86_64 x86_64 GNU/Linux ---序章 读取文件内容,写入新文件(可能存在、也可能不存在)。相关标准库io fs os path filepath Show Code func CopyFile() {// 测试文件拷贝var fsrc, fdst stringvar start time.Timefsr…

OpenPCDet训练自定义数据

官网也提供了步骤,这里详细介绍下训练自己数据的过程以及中间遇到的一些问题。训练模型这里采用PointRCNN,具体的介绍参考:https://www.cnblogs.com/xiaxuexiaoab/p/18033887 一、准备数据集 数据集这一块我们需要准备好原始点云数据、物体目标标注文件、以及训练和验证对应…