首页 > 系统相关 >【命令操作】Linux三剑客之sed详解 _ 统信 _ 麒麟 _ 方德

【命令操作】Linux三剑客之sed详解 _ 统信 _ 麒麟 _ 方德

时间:2024-11-08 08:47:18浏览次数:5  
标签:pdsyw Desktop PC sed Bob txt 方德 三剑客

原文链接:【命令操作】Linux三剑客之sed详解 | 统信 | 麒麟 | 方德
Hello,大家好啊!今天带来一篇关于Linux三剑客之sed命令详解的文章。sed是一款功能强大的流编辑器,它可以在命令行中快速处理文本,支持替换、插入、删除等操作,特别适合用于处理大型文件或批量文本处理任务。

本文将详细介绍sed命令的使用方法及其实际应用场景,帮助大家更好地掌握这款灵活的文本处理工具!欢迎大家分享转发,点个关注和在看吧!

什么是sed命令?

sed(Stream Editor)是一款流式文本处理工具,能够逐行读取文件或输入流,对文本内容进行编辑。sed的常见用途包括文本替换、删除、插入以及数据提取等。它的强大之处在于能够直接在命令行进行快速的文本处理,而不需要打开编辑器。

1.基本语法

sed [选项] '命令' 文件名

sed会逐行读取文件或标准输入,执行指定的命令后输出结果,默认情况下不修改原文件。

2.基本用法

查看文件内容:

pdsyw@pdsyw-PC:~/Desktop$ sed '' pdsyw.txt

不加任何命令,直接显示文件内容。

替换文本:

pdsyw@pdsyw-PC:~/Desktop$ sed 's/Bob/Tom/' pdsyw.txt

s表示替换操作。该命令会将每行中第一个匹配的Bob替换为Tom,并输出结果。

全局替换:

pdsyw@pdsyw-PC:~/Desktop$ sed 's/Bob/Tom/g' pdsyw.txt

在每行中替换所有匹配的Bob。

替换并保存到文件(-i选项):

pdsyw@pdsyw-PC:~/Desktop$ sed -i 's/Bob/Tom/g' pdsyw.txt

使用-i选项,直接修改文件内容。

3.常用选项

-i:直接修改文件,不输出结果到终端。

pdsyw@pdsyw-PC:~/Desktop$ sed -i 's/Tom/Bob/g' pdsyw.txt

-e:执行多条sed命令。

pdsyw@pdsyw-PC:~/Desktop$ sed -e 's/Bob/Tom/' -e 's/Alice/Nana/' pdsyw.txt

一次性执行多个sed命令。

-n:禁止默认输出,仅输出匹配的内容。

pdsyw@pdsyw-PC:~/Desktop$ sed -n 's/Bob/Tom/p' pdsyw.txt

-n会禁用默认输出,使用p命令只输出替换后的行。

4.进阶替换操作

限定范围替换:

pdsyw@pdsyw-PC:~/Desktop$ sed '1,3s/Bob/Tom/' pdsyw.txt

仅在第1到第3行之间替换Bob为Tom。

在指定行中替换:

pdsyw@pdsyw-PC:~/Desktop$ sed '2s/Bob/Tom/' pdsyw.txt

仅在第2行替换Bob为Tom。

正则表达式替换:

pdsyw@pdsyw-PC:~/Desktop$ sed 's/[0-9]/#/g' pdsyw.txt

将文件中的所有数字替换为#。

在替换中使用捕获组:

pdsyw@pdsyw-PC:~/Desktop$ echo "Hello 123" | sed 's/\(Hello\) \(123\)/\2 \1/'

输出123 Hello。\1和\2表示捕获的第一组和第二组内容。

5.删除文本

删除指定行:

pdsyw@pdsyw-PC:~/Desktop$ sed '2d' pdsyw.txt

删除第2行内容。

删除特定范围的行:

pdsyw@pdsyw-PC:~/Desktop$ sed '3,5d' pdsyw.txt

删除第3到第5行的内容。

删除匹配特定模式的行:

pdsyw@pdsyw-PC:~/Desktop$ sed '/Bob/d' pdsyw.txt

删除包含Bob的所有行。

删除空行:

pdsyw@pdsyw-PC:~/Desktop$ sed '/^$/d' pdsyw.txt

删除所有空行。^$表示空行的正则表达式。

6.插入和追加文本

在指定行前插入内容:

pdsyw@pdsyw-PC:~/Desktop$ sed '2i\This is inserted text' pdsyw.txt

在第2行前插入一行文本This is inserted text。

在指定行后追加内容:

pdsyw@pdsyw-PC:~/Desktop$ sed '2a\This is appended text' pdsyw.txt

在第2行后追加一行文本This is appended text。

在匹配行前插入内容:

pdsyw@pdsyw-PC:~/Desktop$ sed '/Bob/i\Inserted before Bob' pdsyw.txt

在匹配到Bob的行前插入文本。

在匹配行后追加内容:

pdsyw@pdsyw-PC:~/Desktop$ sed '/Bob/a\Appended after Bob' pdsyw.txt

在匹配到Bob的行后追加文本。

7.修改文本

替换整行:

pdsyw@pdsyw-PC:~/Desktop$ sed '2c\This is a new line' pdsyw.txt

将第2行替换为This is a new line。

替换匹配行:

pdsyw@pdsyw-PC:~/Desktop$ sed '/Bob/c\This line is replaced' pdsyw.txt

将包含Bob的行替换为This line is replaced。

8.显示和打印

打印指定行:

pdsyw@pdsyw-PC:~/Desktop$ sed -n '3p' pdsyw.txt

只显示第3行内容,-n禁止默认输出,p用于打印匹配的行。

打印特定范围的行:

pdsyw@pdsyw-PC:~/Desktop$ sed -n '3,5p' pdsyw.txt

显示第3到第5行内容。

打印匹配模式的行:

pdsyw@pdsyw-PC:~/Desktop$ sed -n '/Bob/p' pdsyw.txt

只打印包含Bob的行。

打印行号:

pdsyw@pdsyw-PC:~/Desktop$ sed '=' pdsyw.txt

输出文件内容的同时打印行号。

9.变量替换和环境变量

可以使用环境变量作为sed的替换内容:

pdsyw@pdsyw-PC:~/Desktop$ name=“Alice”

pdsyw@pdsyw-PC:~/Desktop$ sed “s/Bob/$name/g” pdsyw.txt

这会将pdsyw.txt文件中Bob替换为Alice。

10.使用正则表达式

基本正则表达式:

pdsyw@pdsyw-PC:~/Desktop$ sed -n ‘/1/p’ pdsyw.txt

输出以大写字母开头的行。^表示行首,[A-Z]表示大写字母。

匹配数字和字母组合:

pdsyw@pdsyw-PC:~/Desktop$ sed ‘s/[0-9]+/[数字]/g’ pdsyw.txt

将所有连续的数字替换为[数字]。

替换包含特殊字符的内容:

pdsyw@pdsyw-PC:~/Desktop$ sed ‘s//usr/local//opt/g’ pdsyw.txt

替换/usr/local为/opt。在sed中,斜杠/是分隔符,需要转义为/。

11.使用多个命令

使用-e选项:

pdsyw@pdsyw-PC:~/Desktop$ sed -e ‘s/Bob/Tom/’ -e ‘s/Alice/Nana/’ pdsyw.txt

使用-e指定多个命令。

使用分号分隔多个命令:

pdsyw@pdsyw-PC:~/Desktop$ sed ‘1d; s/Bob/Tom/g’ pdsyw.txt

删除第1行并将所有foo替换为bar。

在脚本文件中使用sed:

可以将多个sed命令写入脚本文件(例如script.sed):

pdsyw@pdsyw-PC:~/Desktop$ vim script.sed

pdsyw@pdsyw-PC:~/Desktop$ cat script.sed

script.sed

1d

s/Bob/Tom/g

然后执行:

pdsyw@pdsyw-PC:~/Desktop$ sed -f script.sed pdsyw.txt

12.sed常见使用场景

批量替换文件内容:

pdsyw@pdsyw-PC:~/Desktop$ sed -i ‘s/http:/https:/g’ *.html

将当前目录下所有.html文件中的http:替换为https:。

去除文件中的空白行:

pdsyw@pdsyw-PC:~/Desktop$ sed ‘/^$/d’ pdsyw.txt

删除所有空行。

批量删除文件中的HTML标签:

pdsyw@pdsyw-PC:~/Desktop$ sed ‘s/<[^>]*>//g’ pdsyw.txt

删除文件中的所有HTML标签。

提取日志文件中的错误信息:

root@pdsyw-PC:~# sed -n ‘/error/p’ /var/log/messages | head -1

打印包含error的日志行。

在文本文件开头插入多行内容:

pdsyw@pdsyw-PC:~/Desktop$ sed -i ‘1i\This is line 1\nThis is line 2’ pdsyw.txt

通过本文的介绍,大家应该已经掌握了sed命令的基本用法和各种应用场景。sed的强大功能使其在Linux文本处理领域中扮演了重要角色,特别是在批量替换、文件格式化和日志处理等方面,有着不可替代的优势。如果您觉得这篇文章对您有帮助,别忘了分享、转发,并记得点个关注和在看!感谢大家的阅读,我们下次再见!


  1. A-Z ↩︎

标签:pdsyw,Desktop,PC,sed,Bob,txt,方德,三剑客
From: https://blog.csdn.net/m0_69493559/article/details/143471435

相关文章

  • IDEA远程运行使用rsync异常:rsync: connection unexpectedly closed (0 bytes received
    前提:已经使用了Cygwin64且IDEA版本2023、2024均有这个问题发生这个问题可能是使用的是windows自带的C:\Windows\System32\OpenSSH\ssh.exe安装Cygwin64时,需要同时选择安装rsync和ssh。第一次安装没选也没关系,可以再次运行安装程序安装,不用删除上一次的安装。或者使用Cygwin64T......
  • Linux常用命令——sed 命令详解
    Linux常用命令——sed命令详解命令介绍:sed(streameditor)是一种强大的文本处理工具,在Linux系统中广泛用于对文件进行过滤和转换。sed可以对文件中的文本进行插入、删除、查找和替换等操作。基本语法:sed[选项]'命令'文件常用选项和参数:无参数:简单替换。示例:1......
  • SQLI LABS | Less-27 GET-Error Based-All Your UNION & SELECT Belong To Us-String-
    关注这个靶场的其它相关笔记:SQLILABS——靶场笔记合集-CSDN博客0x01:过关流程输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来): http://localhost/sqli-labs/Less-27/本关考察的是SQL注入的绕过姿势,至于发现注入点,相信强大如你已经很容易测出来了,......
  • ScriptBasedMapping: Script /etc/hadoop/conf/topology_script-py
    spark-sql初始化时异常spark-sql初始化的突然发现spark返回无法解决hostname的问题,网上检索也是说hosts配置不对,但是检查后确实没有因此猜测hosts问题不对也可能引发该问题,但是其他问题也能存在引发问题的情况,因为发现由于执行etc/hadoop/conf/topology_script-p......
  • ROLL: Long-Term Robust LiDAR-based Localization With Temporary Mapping in Changi
    开源代码:GitHub-HaisenbergPeng/ROLL:Areal-time,robustLiDAR-inertiallocalizationsystemROLL:Long-TermRobustLiDAR-basedLocalizationWithTemporaryMappinginChangingEnvironmentsROLL:基于LiDAR的长期稳健定位,在不断变化的环境中提供临时测绘摘要:长......
  • mybatis - [10] 三剑客generator&pagehelper$mybatis-plus
    题记部分 一、mybatis-generator1.1、概述mybatis-generator是一个能快速生成xml、dao接口、实体类、注解类的代码生成器。官网地址:https://mybatis.org/generator/index.html 1.2、配置方式-1引入Maven插件依赖<build><plugins><plugin>......
  • Codeforces Round 977 (Div. 2, based on COMPFEST 16 - Final Round)
    Preface这场其实是上周四VP的,因为当时马上要出发打济南站了,但因为挺久没写代码了所以打算临阵磨枪一下好家伙结果Div.2D不会做直接给人整麻了,不过好在看了眼榜把E2写了,后面发现这个D想到了就不难A.MeaningMean容易发现从小到大操作一定最优#include<cstdio>#inc......
  • 用三剑客来快速进行uuid挂载方法.很实用,可以先在虚拟机上试试看,不好用欢迎评论区来
    blkid|grep'UUID'|sed-n'5p'|sed-E's/.*UUID="([^"]+)".*/\1/'|xargs-I{}echo"UUID={}/mnt/disk1xfsdefaults00">>/etc/fstab  简单的脚本详细解释在下面:1.blkid-功能:列出系统中所有块设备的UUID、类型等......
  • ERROR: Unexpected bus error encountered in worker. This might be caused by insuf
    简介:使用YOLO11在Docker里面训练,出现一堆报错#ImageWoof数据集分析狗fromultralyticsimportYOLO#Loadamodelmodel=YOLO("yolo11n-cls.pt")#loadapretrainedmodel(recommendedfortraining)#Trainthemodelmodel.train(data="imagewoof160"......
  • Paper Reading: Mixed Bagging: A Novel Ensemble Learning Framework for Supervised
    目录研究动机文章贡献本文方法分组混合Bagging增量混合Bagging实验结果本文方法的设置数据集和实验设置对比实验优点和创新点PaperReading是从个人角度进行的一些总结分享,受到个人关注点的侧重和实力所限,可能有理解不到位的地方。具体的细节还需要以原文的内容为准,博客中的图......