Linux进阶命令-sedsplit

news2024/12/23 6:23:18

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

经过上一章Linux日志的讲解,我们对Linux系统自带的日志服务已经有了一些了解。我们接下来将讲解一些进阶命令,主要从以下几个方面来讲解:一些系统操作,系统查看处理,Linux文本处理,逻辑判断,重定向,网络传输,服务启动,文件句柄等内容。通过这些操作,让你对Linux的操作更加得心应手,具体分成以下章节进行讲解:

Linux进阶命令-echo&date&alias

Linux进阶命令-top

Linux进阶命令-ps&kill

Linux进阶命令-sort&wc

Linux进阶命令-sed&split(本章节)

Linux进阶命令-awk&uniq

Linux进阶命令-逻辑或&逻辑与

Linux进阶命令-重定向

Linux进阶命令-scp

Linux进阶命令-rsync

Linux进阶命令-rsync-daemon

Linux进阶命令-nohup&screen

Linux进阶命令-lsof

Linux进阶命令-小结

sed

我们在讲Linux-基础命令(四)的时候讲过可以通过vi命令进行编辑搜素,但是他需要先打开文件,而sed命令不需要打开文件就可以实现文件编辑。

今天要讲的sed命令,以前讲过的grep,和后面要讲的awk并称shell的3剑客。

sed(Stream Editor)是一个流编辑器,用于在文本流中进行文本替换和转换操作。它通常用于命令行环境下,可以接受标准输入(stdin)、文件内容或管道输入,并对文本进行修改或处理。

基本语法

sed [options] 'command' [file]
  • options:可选参数,用于控制 sed 命令的行为。

  • 'command'sed 命令,用于指定替换、删除、插入等操作。

  • file:要处理的文件名。如果不指定文件名,则从标准输入读取数据。

常用选项

-e:选项表示后面跟着一个编辑命令

sed -e 's/pattern/replacement/' file.txt

把文件里面每行的第一个pattern替换为replacement,并不会直接修改,而只是将修改的内容打印到控制台。

-i:直接修改文件内容,而不是输出到标准输出。这个操作不可以回退,要慎重。

sed -i 's/old/new/' file.txt

-n:安静模式,只有经过命令处理的行才被列出来。

sed -n '2,5p' file.txt

-r:使扩展正则表达式语法(支持更多的元字符)。

sed -r 's/regex/replacement/' file.txt

常用命令

替换命令 s

sed 's/pattern/replacement/' file.txt

这会将文件 file.txt 中每行第一次出现的 pattern 替换为 replacement

删除命令 d

sed '/pattern/d' file.txt

这会删除文件 file.txt 中包含 pattern 的行。

打印命令 p

sed -n '/pattern/p' file.txt

这会只打印文件 file.txt 中包含 pattern 的行。

插入命令 i 和追加命令 a

sed '/pattern/i new_line' file.txt
sed '/pattern/a new_line' file.txt

这些命令分别在包含 pattern 的行之前和之后插入 new_line

示例

将文件 data.txt 中所有的 apple 替换为 orange,并将结果输出到标准输出:

sed 's/apple/orange/g' data.txt

删除文件 list.txt 中包含 old_item 的行,并直接修改文件:

sed -i '/old_item/d' list.txt

在文件 README.md 的第二行后插入一行 Insert this line

sed '2a Insert this line' README.md

使用场景

  • 批量替换: 在文本文件中批量替换特定的字符串或模式。

  • 文本处理: 用于文件中特定模式的查找、删除、插入操作。

  • 日志处理: 分析和处理日志文件,提取或过滤感兴趣的信息。

split

split 命令用于将文件分割成较小的部分。它在 Unix 和类 Unix 系统(如 Linux)中可用。一般情况下,split 命令的语法如下:

split [选项] [输入文件] [输出文件前缀]

常用选项包括:

  • -b:指定每个输出文件的大小。例如,-b 10M 表示每个文件的大小为 10MB。

  • -l:指定每个输出文件包含的行数。

  • -d:生成的文件使用数字后缀,例如 x00x01x02

  • -a:指定数字后缀的长度,例如 -a 4 指定后缀为四位。

举个例子,如果要将文件 example.txt 按行数分割成多个文件,每个文件包含 1000 行,可以使用以下命令:

split -l 1000 example.txt output_file_prefix

这将把 example.txt 每 1000 行拆分成多个文件,文件名以 output_file_prefix 开头。希望这能帮助到你!如果有任何其他问题,请随时提出。

总结

1.sed我用来主要用来替换文件,尤其修改配置文件,但是操作之前最好通过-e参数先替换打印到控制台,确认无误以后再使用-i参数完成真实替换。

2.其实里面用到的"/"也可以用"#"替代。

3.split主要用于分割文本文件,据说还可以分割二进制文件,但是我没尝试过。

4.能分割,当然可以再组合到一起。

[root@iz2vci40gfjzarlead7vliz split]# split -b 100m bigfile 
[root@iz2vci40gfjzarlead7vliz split]# ll
total 2097156
-rw-r--r-- 1 root root 1073741824 Aug 18 00:55 bigfile
-rw-r--r-- 1 root root  104857600 Aug 18 00:55 xaa
-rw-r--r-- 1 root root  104857600 Aug 18 00:55 xab
[root@iz2vci40gfjzarlead7vliz split]# cat xa* > bigfile1
[root@iz2vci40gfjzarlead7vliz split]# ll
total 3145736
-rw-r--r-- 1 root root 1073741824 Aug 18 00:55 bigfile
-rw-r--r-- 1 root root 1073741824 Aug 18 00:59 bigfile1
-rw-r--r-- 1 root root  104857600 Aug 18 00:55 xaa
-rw-r--r-- 1 root root  104857600 Aug 18 00:55 xab
[root@iz2vci40gfjzarlead7vliz split]# md5sum bigfile bigfile1
cd573cfaace07e7949bc0c46028904ff  bigfile
cd573cfaace07e7949bc0c46028904ff  bigfile1

图片

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

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

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

相关文章

Renesas R7FA8D1BH (Cortex®-M85)控制ISLS29035

目录 概述 1 ISL29035芯片介绍 1.1 ISL29035特征 1.2 ISL29035工作电路 1.3 ISL29035工作时序分析 1.4 ISL29035相关的寄存器 1.4.1 COMMAND-1( 0x00 ) 1.4.2 COMMAND-11(0x01) 1.4.3 DATA寄存器(0x02和0x03) 1.4.4 中断…

2分钟解决联想电脑wifi功能消失 网络适配器错误代码56

分钟解决联想电脑wifi功能消失 网络适配器错误代码56 现象 原因 电脑装了虚拟机,导致网络适配器冲突。我的电脑是装了vm虚拟机,上次更新系统后wifi图标就消失了。 解决方案 1、先卸载虚拟机 2、键盘按winr,弹出运行窗口,输入“…

系统架构设计师 需求分析篇一

📘 结构化分析SA 思想 自顶向下:像剥洋葱一样,层层深入,大问题拆成小问题,再拆成更小的问题。 核心模型 数据字典 📔:记录数据元素的点点滴滴,从属性到使用方式,无所…

QUIC的丢包处理

QUIC的重试数据包(Retry Packet)为什么会触发重启另一个连接 安全性考量 防止重放攻击 重试数据包(Retry Packet)是在初始握手过程中由服务端发送给客户端,用于验证客户端的IP地址,以防止重放攻击。 在一…

STM32上实现FFT算法精准测量正弦波信号的幅值、频率和相位差(标准库)

在研究声音、电力或任何形式的波形时,我们常常需要穿过表面看本质。FFT(快速傅里叶变换)就是这样一种强大的工具,它能够揭示隐藏在复杂信号背后的频率成分。本文将带你走进FFT的世界,了解它是如何将时域信号转化为频域…

【Android】【Compose】实现列表数据添加

序言 在使用列表的时候,以前是使用 Layout 布局里面添加Recyclerview进行列表的显示,但是在Compose里面,是没有这个Recyclerview使用的,那Compose怎么实现列表数据呢? 使用 【LazyColumn】 首先创建一个Compose项目…

java,深拷贝和浅拷贝

在 Java 中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是对象拷贝的两种方式,主要区别在于它们如何处理对象的内部引用。 目录 一、浅拷贝(Shallow Copy) 实现方式 二、深拷贝&…

国际商城系统怎么弄 跨境电商商城怎样上线

国际商城系统一般涉及多个关键步骤。首先,需要选择合适的平台或开发工具,如商淘云国际电商系统或自定义开发。其次,系统应支持多语言、多币种以及国际支付网关,以满足全球客户的需求。第三,确保系统具有强大的物流和配…

推荐5款AI论文大纲生成器,一键极速生成!

在当今学术研究和写作领域,AI论文大纲生成器的出现极大地提高了写作效率和质量。以下是五款功能强大且全面的AI论文大纲生成器推荐: 一、千笔-AIPassPaper 千笔-AIPassPaper是一款基于深度学习和自然语言处理技术的AI写作助手,旨在帮助用户…

新160个crackme - 058-CZG-crackme1

运行分析 按下OK键后,程序退出 PE分析 C程序,32位,无壳 静态分析&动态调试 ida函数栏发现winMain(x,x,x,x),即打开窗口,双击函数跟进 继续跟进 双击DialogFunc函数,这个是窗口逻辑 继续跟进sub_401090函…

数据结构----栈和队列

(一)栈 1.栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First …

GFS 分布式文件系统 GlusterFS

一、GlusterFS概述 1.1、GlusterFS简介 GlusterFS 是一个开源的分布式文件系统。由存储服务器、客户端以及NFS/Samba 存储网关(可选,根据需要选择使用)组成。 包括其去中心化(无元数据服务器)的特性,这有…

【苍穹外卖】总结

1 pom 依赖 1.1 MyBatis Spring 用于简化 MyBatis 与 Spring Boot 的集成,提供了对 MyBatis 框架的自动配置支持,简化了数据访问层的开发 1.2 Lombok Lombok 是一个 Java 库,能够通过注解自动生成常见的代码(如 getter、setter、…

双亲委派机制知识点

类加载器 双亲委派模型 为什么采用双亲委派模型 打破双亲委派机制的场景 Tomcat 打破双亲委派机制:目的是可以加载不同版本的jar包 实现类隔离:在Tomcat中,每个Web应用使用独立的类加载器加载类文件,这样做的好处在于,当在同一T…

C++二叉搜索树(二叉树进阶)

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 C二叉搜索树(二叉树进阶) 收录于专栏 [C进阶学习] 本专栏旨在分享学习C的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. 二叉搜索树…

Java重修笔记 第五十七天 坦克大战(七)多线程基础 - 编程练习

1. 线程之间的协调控制(通知方式) public class Homework04 {public static void main(String[] args) {// 在 main 方法中启动两个线程// 第一个线程内循环打印 1 到 100 以内的整数// 直到第二个线程从键盘读取到 "Q" 指令后结束第一个线程…

Porcupine - 语音关键词唤醒引擎

文章目录 一、关于 Porcupine特点用例尝试一下 语言支持性能 二、Demo1、Python Demo2、iOS DemoBackgroundService DemoForegroundApp Demo 3、网页 Demo3.1 Vanilla JavaScript 和 HTML3.2 Vue Demos 三、SDK - Python 一、关于 Porcupine Porcupine 是一个高度准确和轻量级…

LC并联电路在正弦稳态下的传递函数推导(LC并联谐振选频电路)

LC并联电路在正弦稳态下的传递函数推导(LC并联谐振选频电路) 本文通过 1.解微分方程、2.阻抗模型两种方法推导 LC 并联选频电路在正弦稳态条件下的传递函数,并通过仿真验证不同频率时 vo(t) 与 vi(t) 的幅值相角的关系。 电路介绍 已知条件…

Axure RP实战:打造高效图形旋转验证码

Axure RP实战:打造高效图形旋转验证码 在数字产品设计的海洋中,验证码环节往往是用户交互体验的细微之处,却承载着验证用户身份的重要任务。 传统的文本验证码虽然简单直接,但随着用户需求的提高和设计趋势的发展,它…

vue2的diff算法

Vue2 的虚拟 DOM diff 算法是一种高效的算法,用于比较新旧两个虚拟 DOM 树,找出差异并更新到真实 DOM 上。这个算法的核心在于尽量减少不必要的 DOM 操作,提高性能。 虚拟dom:把DOM数据化,先通过不断地操作数据&#…