首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >技能篇:sed教程-linux命令

技能篇:sed教程-linux命令

作者头像
潜行前行
发布于 2021-06-25 13:38:28
发布于 2021-06-25 13:38:28
78400
代码可运行
举报
文章被收录于专栏:潜行前行潜行前行
运行总次数:0
代码可运行

前言

sed 全名为 stream editor,是用于文本处理的流编辑器,支持正则表达式。sed处理文本时是一次处理一行内容

sed语法

  • sed命令处理的内容是模式空间中的内容,而非直接处理文件内容。如果加上参数 i 则可直接修改文件内容
  • 示例:sed -i 's/原字符串/新字符串/' /home/test.txt

sed [-nefr参数] [function] [filePath]

选项与参数

描述

-n

使用 silent 模式。在一般 sed 的用法中,输入的数据都会被输出到屏幕上。但如果加上 -n 参数后,则不会显示,如果有跟着 p 标志,被 sed 特殊处理的那一行会被列出来

-e

直接在命令行界面上进行 sed 的动作编辑,执行多条子命令

-f

将 sed 的动作写在一个文件内, -f filename 执行脚本文件的 sed 动作

-r

sed 的动作支持的是延伸型正则表达式的语法

-i

直接修改读取的文件内容

  • 选项-n,加上-n选项后被设定为安静模式,也就是不会输出默认打印信息,除非子命令中特别指定打印 p 选项,则只会把匹配修改的行进行打印
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---- 两行都打印出来 ----
server11:~/test # echo -e 'hello \n world' | sed 's/hello/csc/'
csc 
 world
---- 一行也没打印 -----
server11:~/test # echo -e 'hello \n world' | sed -n 's/hello/csc/'
---- 打印了匹配行 -----
server11:~/test # echo -e 'hello \n world' | sed -n 's/hello/csc/p'
csc 
  • 选项-e,多条子命令连续进行操作
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo -e 'hello world' | sed -e 's/hello/csc/' -e 's/world/lwl/'
结果:csc lwl
  • 选项-i,直接修改读取的文件内容
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server11:~/test # cat file.txt 
hello world
server11:~/test # sed 's/hello/lwl/' file.txt 
lwl world
server11:~/test # cat file.txt              
hello world
---- 加上参数 i 可以直接修改文件内容----
server11:~/test # sed -i 's/hello/lwl/' file.txt 
lwl world
server11:~/test # cat file.txt              
lwl world
  • 选项-f,执行文件脚本
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sed.script脚本内容:
s/hello/csc/
s/world/lwl/
------
echo "hello world" | sed -f sed.script
结果:csc lwl
  • 选项-r,默认只能支持基本正则表达式,如果需要支持扩展正则表达式,需要加上 -r
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "hello world" | sed -r 's/(hello)|(world)/csc/g'
csc csc

function表达式:[n1[,n2]] function or /{pattern}/function

  • n1, n2 :可选项,一般代表“选择进行function处理的行数”,举例来说,如果「function」是需要在 10 到 20 行之间进行的,则表示为 10,20 [function]
  • 如果需用正则表达式匹配字符串,则可用 /{pattern}/ 匹配
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test.txt 内容 
111
222
333
444
----- 删除非第23行之间的所有行 ----------
server11:~ # sed -i '2,3!d' test.txt 
server11:~ # cat test.txt
222
333
------ 正则表达式匹配 ------------
server11:~ # echo 'clswcl.txt' | sed -nr '/.*/p'
clswcl.txt  //  /{pattern}/ = /.*/

function 有以下这些选项

function

描述

a

新增:a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)

i

插入:i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)

c

取代:c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行

d

删除:因为是删除啊,所以 d 后面通常不接任何东西

p

打印:亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行

s

取代:可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如:1,20 s/old/new/g

  • function:-a,行后插入新行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sed -i '/特定字符串/a 新行字符串' fileName
  • function:-i,行前插入新行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sed -i '/特定字符串/i 新行字符串' fileName
  • function:-c,修改指定内容行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sed -i '/特定字符串/c csc lwl' fileName 
  • function:-d,删除特定字符串
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sed -i '/特定字符串/d' fileName 

sed s子命令: s/{pattern}/{replacement}/{flags}

  • {pattern}是正则表达式
  • 如果{pattern}存在分组,{replacement}中的"\n"代表第n个分组,"&"代表整个匹配的字符串。详情看示例
  • flags的参数如下

flags

描述

n

可以是1-512,表示第n次出现的情况进行替换

g

全局更改

p

打印模式空间的内容

w file

写入到一个文件file中

  • 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server11:~ # echo -e 'hello 1112 world' | sed -r 's/([a-z]+)( [0-9]+ )([a-z]+)/&/'  
hello 1112 world
server11:~ # echo -e 'hello 1112 world' | sed -r 's/([a-z]+)( [0-9]+ )([a-z]+)/\3\2\1/' 
world 1112 hello

参考文章

  • sed -i命令详解及入门攻略[1]

Reference

[1]

sed -i命令详解及入门攻略: https://blog.csdn.net/qq_33468857/article/details/84324609

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 潜行前行 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
技能篇:shell教程及脚本编写
我们常时不会见到shell脚本,但是需要阅读开发linux脚本时,这又是一项必不可少的技能。本文在于提供基础的shell编程语法和简单的实例,帮助同学快速开发,可当做shell手册使用也非常善
潜行前行
2021/06/25
1.4K0
技能篇:awk教程-linux命令
AWK是一门解释型的编程语言。用于文本处理,它的名字来源于它的三位作者的姓氏:Alfred Aho, Peter Weinberger 和 Brian Kernighan
潜行前行
2021/06/25
2K0
技能篇:awk教程-linux命令
【sed学习】sed -i和sed -i -e有什么区别
sed -i 和 sed -i -e 是用于编辑文件中匹配模式的命令。它们的区别在于 -e 选项。
天天Lotay
2024/01/06
1.1K0
Linux||sed命令使用讲解
sed是stream editor的缩写,译为"流编辑器",一般用来对文本数据进行增删改查即新增、删除、替换、查找。
小汪Waud
2023/02/03
1.6K0
Linux||sed命令使用讲解
linux学习第二十六篇:正则介绍,grep,sed,awk命令
正则介绍 正则就是一串有规律的字符串,掌握好正则对于编写shell脚本有很大帮助,各种编程语言中都有正则,原理是一样的。正则表达式是这样解释的:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作中,无论是查找某个文档,抑或查询某个日志文件分析其内容,都会用到正则表达式。其实正则表达式,只是一
用户1215343
2018/02/05
4.2K0
linux学习第二十六篇:正则介绍,grep,sed,awk命令
Linux三剑客之grep命令详解及相关实例
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
菲宇
2022/12/02
1.9K0
一天一个 Linux 命令(20):sed 命令
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/150
joshua317
2021/10/09
3590
sed基本用法
创建虚拟机,用最小化方式安装,按要求配置好ip,同网段之间要能互通,配置好yum,修改主机名
派大星在吗
2021/12/05
1.3K0
Sed 命令详解
sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
Allen Cheng
2018/09/10
1.1K0
Sed 命令详解
linux中sed命令总结
原文:https://wangchujiang.com/linux-command/c/sed.html
入门笔记
2022/06/02
3.8K0
干货!上古神器 sed 教程详解,小白也能看的懂
熟悉 Linux 的同学一定知道大名鼎鼎的 Linux 三剑客,它们是 grep、awk、sed,我们今天要聊的主角就是 sed。
用户3105362
2021/02/04
2.6K0
干货!上古神器 sed 教程详解,小白也能看的懂
Linux三大剑客之sed
版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢。联系本人:ecsboy(微信),136625317(QQ) https://blog.csdn.net/solaraceboy/article/details/79272344
耕耘实录
2018/12/20
9330
sed入门详解教程 原
    sed 是一个比较古老的,功能十分强大的用于文本处理的流编辑器,加上正则表达式的支持,可以进行大量的复杂的文本编辑操作。sed 本身是一个非常复杂的工具,有专门的书籍讲解 sed 的具体用法,但是个人觉得没有必要去学习它的每个细节,那样没有特别大的实际意义。网上也有很多关于 sed 的教程,我也是抱着学习的心态来学习 sed 的常见的用法,并进行系统的总结,内容基本覆盖了 sed 的大部分的知识点。文中的内容比较简练,加以实际示例来帮助去理解 sed 的使用。
拓荒者
2019/03/11
1.7K0
sed入门详解教程
                                                                            原
Linux命令篇(二):文档编辑部分
rgrep命令等同于 grep -r 命令,主要是用于递归查找文件里符合条件的字符串,基本语法格式如下:
用户11147438
2024/06/04
3800
秒懂 Linux 三剑客:awk、sed、grep 的超实用操作示例
在介绍"Linux三剑客"之前,我们先引入正则表达式的概念,有助于之后命令的理解和使用。
天意生信云
2025/01/22
4390
秒懂 Linux 三剑客:awk、sed、grep 的超实用操作示例
sed 命令+正则表达式
sed是一个非交互性性文本编辑器, 它编辑文件或标准输入导出的文件拷贝。标准输入可能是来自键盘、文件重定向、字符串或变量,或者是一个管道文件。sed可以随意编辑小或大的文件,有许多 sed命令用来编辑、删除,并允许做这项工作时不在现场。sed一次性处理所有改变,因而变得很有效,对用户来说,最重要的是节省了时间。sed必须通过行号和正则表达式指定要改变的文本行
一见
2018/08/07
3.8K0
linux sed命令使用
sed是一款常用的文本处理工具,其名称来自于“stream editor”(流编辑器)。sed能够从标准输入或文件中读取文本,对文本进行编辑和转换,然后将结果输出到标准输出或指定的文件中。在Linux系统中,sed命令是一种非常强大和灵活的工具,可以帮助用户进行多种文本操作,如文本替换、删除、插入、打印等等。
堕落飞鸟
2023/03/27
4.3K0
linux运维中的命令梳理(三)
----------文本操作命令---------- sed命令:文本编辑工具 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数
洗尽了浮华
2018/01/23
8.5K0
linux基础命令介绍十:文本流编辑 sed
与vim不同,sed是一种非交互式的文本编辑器,同时它又是面向字符流的,每行数据经过sed处理后输出。
用户5030870
2019/04/10
1.2K0
Linux进阶命令-sed&split
作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
运维小路
2024/11/01
2910
Linux进阶命令-sed&split
相关推荐
技能篇:shell教程及脚本编写
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档