当前位置: 首页 > news >正文

Linux Shell 脚本编程学习之【第5章 文件的排序、合并与分割 (第四部分之cut命令) 】

第5章 文件的排序、合并与分割 (第四部分之cut命令)

  • 4 cut 命令
    • 4.1 选项及其意义
    • 4.2 输出字符 (-c)
    • 4.3 改变分隔符(-d)和提取特定域(-f)
  • 5 paste 命令
    • 5.1 paste 命令选项及其意义
    • 5.2 基础用法
    • 5.3 分隔符 (-d)
    • 5.4 按行粘贴(-s)
    • 5.5 从标准输入中读取(-)
  • 6 split命令
    • 6.1 split 命令选项及其意义
    • 6.2 基础用法
    • 6.3 按大小切割(-b)
    • 6.4 按大小切割,但保留完整记录(-C)

4 cut 命令

4.1 选项及其意义

选 项意 义
-c指定提取的字符数或字符范围
-f指定提取的域数或域范围
-d改变域分隔符

4.2 输出字符 (-c)

[root@2E-8E-22-DC-1E-ED 2023]# cat teacher.db 
D Hou:Beijing University:Beijing:China
Y Zhang:Victory University:Melbourne:Australia
J Luo:Southeast University:Nanjing:China
B Liu:Shanghai Jiaotong University:Shanghai:China
C Lin:University of Toronto:Toronto:Canada
[root@2E-8E-22-DC-1E-ED 2023]# cut -c3 teacher.db 
H
Z
L
L
L

4.3 改变分隔符(-d)和提取特定域(-f)

[root@2E-8E-22-DC-1E-ED 2023]# cut -d: -f1,4 test.log  ---提取test.log的第1,4域
B Liu:China
C Lin:Canada
D Hou:China
J Luo:China
Y Zhang:Australia
[root@2E-8E-22-DC-1E-ED 2023]# cut -d: -f1-3 test.log   ---提取test.log的第1,2,3域
B Liu:Shanghai Jiaotong University:Shanghai
C Lin:University of Toronto:Toronto
D Hou:Beijing University:Beijing
J Luo:Southeast University:Nanjing
Y Zhang:Victory University:Melbourne
[root@2E-8E-22-DC-1E-ED 2023]# 

5 paste 命令

paste 命令用于将文本文件或标准输出中的内容粘贴到新的文件,它可以将来自不同文件的数据粘贴到一起,形成新的文件。

5.1 paste 命令选项及其意义

选 项意 义
-d默认域分隔符是空格或Tab键,设置新的域分隔符
-s将每个文件粘贴成一行
-从标准输入中读取数据

5.2 基础用法

[root@2E-8E-22-DC-1E-ED 2023]# cat file1
Shanghai  Jiaotong  University
University  of Toronto
Beijing   University
Southeast University
[root@2E-8E-22-DC-1E-ED 2023]# cat file2
Shanghai
Toronto
Beijing
Nanjing
Melbourne
[root@2E-8E-22-DC-1E-ED 2023]# 
[root@2E-8E-22-DC-1E-ED 2023]# paste file1 file2
Shanghai  Jiaotong  University  Shanghai
University  of Toronto  Toronto
Beijing   University    Beijing
Southeast University    NanjingMelbourne
[root@2E-8E-22-DC-1E-ED 2023]# paste file2 file1
Shanghai        Shanghai  Jiaotong  University
Toronto University  of Toronto
Beijing Beijing   University
Nanjing Southeast University
Melbourne

5.3 分隔符 (-d)

[root@2E-8E-22-DC-1E-ED 2023]# paste -d@ file1 file2
Shanghai  Jiaotong  University@Shanghai
University  of Toronto@Toronto
Beijing   University@Beijing
Southeast University@Nanjing
@Melbourne
[root@2E-8E-22-DC-1E-ED 2023]# paste -d: file1 file2
Shanghai  Jiaotong  University:Shanghai
University  of Toronto:Toronto
Beijing   University:Beijing
Southeast University:Nanjing
:Melbourne
[root@2E-8E-22-DC-1E-ED 2023]# 

paste 命令则不同,改变域分隔符是用于设置输出文件的格式。

5.4 按行粘贴(-s)

paste 不加-s选项时,将文件内容“竖着放”,加上-s选项后,将文件内容“横着放”。

[root@2E-8E-22-DC-1E-ED 2023]# paste -d: file1 file2
Shanghai  Jiaotong  University:Shanghai
University  of Toronto:Toronto
Beijing   University:Beijing
Southeast University:Nanjing
:Melbourne
[root@2E-8E-22-DC-1E-ED 2023]# paste -d: -s file1 file2
Shanghai  Jiaotong  University:University  of Toronto:Beijing   University:Southeast University
Shanghai:Toronto:Beijing:Nanjing:Melbourne

5.5 从标准输入中读取(-)

[root@2E-8E-22-DC-1E-ED 2023]# ls | paste -d " " - - - - -
area.db export.txt file1 file2 linshi.log
save.txt teacher.db test.log uniq.log word.sh

通过读取ls命令的输出结果,再进行粘贴。
paste命令后的-d""将分隔符设置为空格符,在原本应出现“文件1 文件2”的位置上加上“- ” 选项。例中加了5个“- ”选项,从结果可以看到,粘贴后的每行显示5个文件名,每个 " "选项表示读取1次标准输入数据,即读取到标准输入数据中的一个域。

6 split命令

6.1 split 命令选项及其意义

split 命令的选项用于指定切割的依据
split命令所切割生成的小文件最多包含1000行记录。

选 项意 义
-或-1此两个选项等价,都用于指定切割成小文件的行数
-b指定切割成小文件的字节
-C与-b选项类似,但是,切割时尽量维持每行的完整性

6.2 基础用法

[root@2E-8E-22-DC-1E-ED 2023]# split -2 teacher.db pro.db[root@2E-8E-22-DC-1E-ED 2023]# ls -l pro.db*
-rw-r--r--. 1 root root 86 7月  27 15:12 pro.dbaa
-rw-r--r--. 1 root root 91 7月  27 15:12 pro.dbab
-rw-r--r--. 1 root root 43 7月  27 15:12 pro.dbac[root@2E-8E-22-DC-1E-ED 2023]# cat pro.dbaa 
D Hou:Beijing University:Beijing:China
Y Zhang:Victory University:Melbourne:Australia[root@2E-8E-22-DC-1E-ED 2023]# cat pro.dbab 
J Luo:Southeast University:Nanjing:China
B Liu:Shanghai Jiaotong University:Shanghai:China[root@2E-8E-22-DC-1E-ED 2023]# cat pro.dbac
C Lin:University of Toronto:Toronto:Canada
[root@2E-8E-22-DC-1E-ED 2023]# 

split命令利用-2指定按2行对TEACHER.db 进行切割,即每2行记录切割成1个文件。 PEO.db 指定输出小文件名,由于小文件有多个, split 命令在 PEO.db 后面自动加上编号以区分不同的小文件,编号为aa~zz,即第1个小文件是PEO.dbaa、第2个是PEO.dbab、第3个是PEO.dbac、……,我们逐个查看小文件的记录,前面两个小文件包含2条记录,最后1个小文件只有1条记录。

6.3 按大小切割(-b)

[root@2E-8E-22-DC-1E-ED 2023]# ll teacher.db    --大小220
-rw-r--r--. 1 root root 220 7月  26 15:33 teacher.db
[root@2E-8E-22-DC-1E-ED 2023]# split -b100 teacher.db    --按100切割
[root@2E-8E-22-DC-1E-ED 2023]# ll x*
-rw-r--r--. 1 root root 100 7月  27 15:16 xaa
-rw-r--r--. 1 root root 100 7月  27 15:16 xab
-rw-r--r--. 1 root root  20 7月  27 15:16 xac
[root@2E-8E-22-DC-1E-ED 2023]# cat xaa 
D Hou:Beijing University:Beijing:China
Y Zhang:Victory University:Melbourne:Australia
J Luo:Southeas[root@2E-8E-22-DC-1E-ED 2023]# cat xab
t University:Nanjing:China
B Liu:Shanghai Jiaotong University:Shanghai:China
C Lin:University of Tor[root@2E-8E-22-DC-1E-ED 2023]# cat xac
onto:Toronto:Canada
[root@2E-8E-22-DC-1E-ED 2023]# 

split 命令利用-b 选项按100B 切割TEACHER.db 文件,当 split 命令不指定小文件的名字时,将自动以x 开头、 aa~zz为编号对这些小文件进行命名,用Ⅱ命令查看这三个小文件时发现,xaa 和 xab 是100B,xac 是20B,这说明确实按照100B 的大小切割了TEACHER.db文件。但是,当用 cat 命令查看这三个文件时,发现每个文件内容比较凌乱,甚至存放了不完整的单词。因此,split命令-b选项在切割文件时仅考虑了文件大小,并未考虑记录的完整性。

6.4 按大小切割,但保留完整记录(-C)

[root@2E-8E-22-DC-1E-ED 2023]# split -C100 teacher.db 
[root@2E-8E-22-DC-1E-ED 2023]# cat xaa 
D Hou:Beijing University:Beijing:China
Y Zhang:Victory University:Melbourne:Australia
[root@2E-8E-22-DC-1E-ED 2023]# cat xab
J Luo:Southeast University:Nanjing:China
B Liu:Shanghai Jiaotong University:Shanghai:China
[root@2E-8E-22-DC-1E-ED 2023]# cat xac
C Lin:University of Toronto:Toronto:Canada
[root@2E-8E-22-DC-1E-ED 2023]# ll xa*
-rw-r--r--. 1 root root 86 7月  27 15:20 xaa
-rw-r--r--. 1 root root 91 7月  27 15:20 xab
-rw-r--r--. 1 root root 43 7月  27 15:20 xac
[root@2E-8E-22-DC-1E-ED 2023]# 

利用-C 选项按100B 切割TEACHER.db 文件,同样得到 xaa、xab 和xac 三个小 文件,但是, xaa是93B、xab是80B、xac是47B,xaa、xab 和 xac 这三个文件存放了完整 的记录,由此可见, -C 选项并不严格按照100B 的大小进行切割,而是在切割时尽量维持每 行的完整性。

相关文章:

Linux Shell 脚本编程学习之【第5章 文件的排序、合并与分割 (第四部分之cut命令) 】

第5章 文件的排序、合并与分割 (第四部分之cut命令) 4 cut 命令4.1 选项及其意义4.2 输出字符 (-c)4.3 改变分隔符(-d)和提取特定域(-f) 5 paste 命令5.1 paste 命令选项及其意义5.2…...

php-golang-rpc jsonrpc和php客户端tivoka/tivoka包实践

golang 代码: package main import ( "fmt" "net" "net/rpc" "net/rpc/jsonrpc" ) type App struct{} type Res struct { Code int json:"code" Msg string json:"msg" Data any json:"…...

flutter 打包iOS安装包

flutter iOS Xcode打包并导出ipa文件安装包 1、 Xcode配置 1、 启动打包 1、 等待打包 1、 打包完成、准备导出ipa 1、 选择模式 1、 选择配置文件 1、 导出 1、 选择导出位置 1、 得到ipa...

二进制重排

二进制重排作用 二进制重排的主要目的是将连续调用的函数连接到相邻的虚拟内存地址,这样在启动时可以减少缺页中断的发生,提升启动速度。目前网络上关于ios应用启动优化,通过XCode实现的版本比较多。MacOS上的应用也是通过clang进行编译的&am…...

【Linux后端服务器开发】MAC地址与其他重要协议

目录 一、以太网 二、MAC地址 三、MTU 四、ARP协议 五、DNS系统 六、ICMP协议 七、NAT技术 八、代理服务器 一、以太网 “以太网”不是一种具体的网路,而是一种技术标准:既包含了数据链路层的内容,也包含了一些物理层的内容&#xf…...

WebGPU入门

1. 引言 前序博客: CUDA入门WebGPUZKP:客户端证明 WebGPU——Draft 2023.7.17 由苹果、谷歌、Mozilla团队发起,当前处于草稿阶段,旨在成为W3C推荐标准。 WebGPU为 在图形处理单元(GPU)上执行诸如渲染和…...

React Dva项目中.roadhogrc.mock.js直接自动导入mock目录下所有文件方式

上文 React Dva项目中模仿网络请求数据方法 中,我们书写了Dva项目模拟后端数据的方式 但是 我们.roadhogrc.mock.js中的这个处理其实并不好用 我们还需要一个一个的引入 我们可以直接靠一段代码 import fs from fs; import path from path; const mock {} fs.re…...

跨境独立站如何应对恶意网络爬虫?

目录 跨境出海独立站纷纷成立 爬虫威胁跨境电商生存 如何有效识别爬虫? 技术反爬方案 防爬虫才能保发展 中国出海跨境电商业务,主要选择大平台开设店铺,例如,亚马逊、eBay、Walmart、AliExpress、Zalando等。随着业务的扩大&…...

C# SourceGenerator 源生成器初探

简介 注意: 坑极多。而且截至2023年,这个东西仅仅是半成品 利用SourceGenerator可以在编译结束前生成一些代码参与编译,比如编译时反射之类的,还有模板代码生成都很好用。 演示仓库传送门-Github-yueh0607 使用 1. 创建项目 …...

网络安全/信息安全—学习笔记

一、网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面…...

【Visual Studio】无法打开包括文件: “dirent.h”: No such file or directory

VS2017/2019 无法打开包括文件: “dirent.h”: No such file or directory 1 “dirent.h”: No such file or directory 在windows下的VS2017/2019编译器中,发现无法打开“dirent.h”,主要是MSVC并没有实现这个头文件,但是在Linux这个头文件…...

asp.net MVC markdown编辑器

在 ASP.NET MVC 中,你可以使用一些第三方 Markdown 编辑器来让用户在网页上方便地编辑和预览 Markdown 内容。这些编辑器通常提供实时预览功能,将 Markdown 文本转换为实时渲染的 HTML,并支持编辑器工具栏来辅助用户编辑。 以下是一些流行的…...

论文浅尝 | 预训练Transformer用于跨领域知识图谱补全

笔记整理:汪俊杰,浙江大学硕士,研究方向为知识图谱 链接:https://arxiv.org/pdf/2303.15682.pdf 动机 传统的直推式(tranductive)或者归纳式(inductive)的知识图谱补全(KGC)模型都关注于域内(in-domain)数据,而比较少关…...

算法工程师-机器学习面试题总结(2)

线性回归 线性回归的基本思想是? 线性回归是一种用于建立和预测变量之间线性关系的统计模型。其基本思想是假设自变量(输入)和因变量(输出)之间存在线性关系,通过建立一个线性方程来拟合观测数据&#xff…...

低成本32位单片机空调内风机方案

空调内风机方案主控芯片采用低成本32位单片机MM32SPIN0230,内部集成了具有灵动特色的电机控制功能:高阶4路互补PWM、注入功能的高精度ADC、轨到轨运放、轮询比较器、32位针对霍尔传感器的捕获时钟、以及硬件除法器和DMA等电机算法加速引擎。 该方案具有…...

读发布!设计与部署稳定的分布式系统(第2版)笔记25_互联层之路由和服务

1. 控制请求数量 1.1. 这个世界可以随时摧毁我们的系统 1.1.1. 要么拒绝工作 1.1.2. 要么扩展容量 1.1.3. 没有人会在与世隔绝的环境中使用服务,现在的服务大多必须处理互联网规模的负载 1.2. 系统的每次失效,都源自某个等待队列 1.3. 每个请求都会…...

AI面试官:LINQ和Lambda表达式(二)

AI面试官:LINQ和Lambda表达式(二) 当面试官面对C#中关于LINQ和Lambda表达式的面试题时,通常会涉及这两个主题的基本概念、用法、实际应用以及与其他相关技术的对比等。以下是一些可能的面试题目,附带简要解答和相关案…...

Mysql原理篇--第二章 索引

文章目录 前言一、mysql的索引是什么?1.1 索引的结构:1.2 b树特性:1.3 b树每个节点的结构:1.4 b树 键值的大小排序:1.4 b树 存储(InnoDB): 二、索引类型2.1 主要的索引类型&#xff…...

保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识

1.简介 有的小伙伴或者童鞋们可能会好奇地问,不是讲解和分享抓包工具了怎么这里开始讲解HTTP和HTTPS协议了。这是因为你对HTTP协议越了解,你就能越掌握Fiddler的使用方法,反过来你越使用Fiddler,就越能帮助你了解HTTP协议。 Fid…...

【iOS】单例、通知、代理

1 单例模式 1.1 什么是单例 单例模式在整个工程中,相当于一个全局变量,就是不论在哪里需要用到这个类的实例变量,都可以通过单例方法来取得,而且一旦你创建了一个单例类,不论你在多少个界面中初始化调用了这个单例方…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...