sed文本处理工具常见用法

sed,工具,常见,用法 · 浏览次数 : 19

小编点评

当然,以下是您所要生成的文字: **sed** 是一个用来处理文本内容和终端命令的**流编译器**。它可以处理文本内容和终端命令的**流标准输出**,对文本做查找,替换,插入,删除操作。它是一个非交互式的文本处理工具,默认不会修改源文件。 **它可以执行以下操作:** * **打印指令**: `p` * **取消默认打印**: `n` * **删除选定的行**: `d` * **匹配指定字符组内的任一字符**: `[]` * **匹配包含特定字符的任一字符**: `/m..y/` * **匹配包含My或my的行**: `/[Mm]y/` **常用命令:** * `p`: 打印选定的行 * `n`: 取消默认打印 * `d`: 删除选定的行 * `s`:字符串替换 * `e`:连续编辑 **示例:** ``` # 打印所有My结尾的行 sed '/my/p' datafile # 删除第二到第五行的行 sed '2,5d' datafile # 删除包含\"My\"的行到包含\"You\"的行之间的行 sed '/My/,/You/d' datafile # 删除包含\"My\"的行到第十行的内容 sed '/My/,10d' datafile # 打印所有以My结尾的行 sed '/my$/p' datafile # 取消默认输出 sed -n '1,20s/My$/You/gp' datafile # 多重编辑 sed -e '1,10d' -e 's/My/Your/g' datafile ``` **注意:** * `^` 和 `$` 匹配行首和行尾。 * `\` 用于转义引号。 * `[]` 用于匹配一个字符组。 * `*` 用于匹配零或多个字符。

正文

sed的全称是stream editor, 表示它是一个流编译器。可以处理文本内容和终端命令的流标准输出,对文本做查找,替换,插入,删除操作。
它是把文件中的内容逐行copy到缓冲区,然后在缓冲区中进行处理,最后把处理的结果显示到屏幕上并清空缓冲区
然后再从文件中读取下一行到缓冲区,重复这个过程,直到所有的行都处理完。如果设置了处理行范围则只处理范围内的行,没有指定时则处理所有的行。
sed是一个非交互式的文本处理工具,它默认不会修改源文件。

处理选定的行
使用数字表示地址行号,$符号表示最后一行。
# 只查看文件的第3行
sed -n '3p' datafile
# 只查看文件的第100行到第200行 
sed -n '100,200p' mysql_slow_query.log
2个地址使用“,”分割,表示在这2个范围之间,前后地址可以使用正则或数字表示。
sed '2,5d' datafile
#删除第二到第五行
sed '/My/,/You/d' datafile
#删除包含"My"的行到包含"You"的行之间的行
sed '/My/,10d' datafile
#删除包含"My"的行到第十行的内容

sed工具的命令与选项

选项
-e 进行多重编辑,即对在缓冲区的这一行做连续编辑;前面的编辑完,后面的接着编辑。
-n 取消默认的输出
-f 指定sed脚本的文件名
命令
d 删除行
p 打印行
s 用一个字符串替换另一个
g 在行内进行全局替换
 
正则表达式
sed使用的正则表达式是括在斜杠线"/"之间的模式。
^ 行首定位符 /^my/ 匹配所有以my开头的行
$ 行尾定位符 /my$/ 匹配所有以my结尾的行
. 匹配除换行符以外的单个字符 /m..y/ 匹配包含字母m,后跟两个任意字符,再跟字母y的行
* 匹配零个或多个前导字符 /my*/ 匹配包含字母m,后跟零个或多个y字母的行
[] 匹配指定字符组内的任一字符 /[Mm]y/ 匹配包含My或my的行
 
常见使用方式
p命令
p: 打印指令,n: 取消默认打印。两个同时使用,表示只打印选定的行。
sed '/my/p' datafile
#默认情况下,sed把所有输入行都打印在标准输出上。如果某行匹配模式my,p命令将把该行另外打印一遍。
sed -n '/my/p' datafile
#选项-n取消sed默认的打印,p命令把匹配模式my的行打印一遍。
d命令
删除选定的行
sed '$d' datafile
#删除最后一行,其余的都被显示
sed '/my/d' datafile
#删除包含my的行,其余的都被显示
s命令
字符串替换
sed 's/^My/You/g' datafile
#命令末端的g表示在行内进行全局替换,也就是说如果某行出现多个My,所有的My都被替换为You。
sed -n '1,20s/My$/You/gp' datafile
#取消默认输出,处理1到20行里匹配以My结尾的行,把行内所有的My替换为You,并打印到屏幕上。
 
e选项
连续编辑,对应缓冲区的一行文本,做顺序的连续编辑处理
sed -e '1,10d' -e 's/My/Your/g' datafile
#选项-e用于进行多重编辑。第一重编辑删除第1-10行。第二重编辑将出现的所有My替换为Your。因为是逐行进行这两项编辑(即这两个命令都在模式空间的当前行上执行),所以编辑命令的顺序会影响结果。

 

参考文章:https://blog.csdn.net/gua___gua/article/details/49304699
 
 

与sed文本处理工具常见用法相似的内容:

sed文本处理工具常见用法

sed的全称是stream editor, 表示它是一个流编译器。可以处理文本内容和终端命令的流标准输出,对文本做查找,替换,插入,删除操作。 它是把文件中的内容逐行copy到缓冲区,然后在缓冲区中进行处理,最后把处理的结果显示到屏幕上并清空缓冲区 然后再从文件中读取下一行到缓冲区,重复这个过程,直

分享几个常用的运维 shell 脚本

今天咸鱼给大家分享几个不错的 Linux 运维脚本,这些脚本中大量使用了 Linux 的文本三剑客: 1. awk 2. grep 3. sed 建议大家这三个工具都要了解并最好能够较为熟练的使用 根据 PID 显示进程所有信息 根据用户输入的 PID,过滤出该 PID 所有的信息 #! /bin/

[转帖]Shell三剑客之sed

目录 Shell三剑客sed工具sed 流编辑器的工作过程sed命令格式与选项操作符sed命令的常用选项sed命令的打印功能默认打印方式sed命令的寻址打印文本模式过滤行内容 sed的删除操作通过行号进行删除匹配字符串内容删除字符串搭配正则进行删除删除空行的三种方法 sed命令替换符进行大小写的替换

[转帖]Linux下AWK、SED、GREP、FIND命令详解

https://www.jianshu.com/p/d54e0359db01 AWK AWK是一个优良的文本处理工具,Linux和Unix环境中现有的功能最强大的数据处理引擎之一。 语法 awk [选项参数] 'script' var=value file(s) 或 awk [选项参数] -f sc

[转帖]Linux文本处理三剑客sed详解(正则匹配、命令示例)

https://developer.aliyun.com/article/885609?spm=a2c6h.24874632.expert-profile.312.7c46cfe9h5DxWK 简介: sed读一行放到模式空间进行处理 sed是一种在线的、非交互式的编辑器,它一次处理一行内容,处理时

Linux:管道命令与文本处理三剑客(grep、sed、awk)

众所周知,bash命令执行的时候会输出信息,但有时这些信息必须要经过几次处理之后才能得到我们想要的格式,此时应该如何处置?这就牵涉到 管道命令(pipe) 了。管道命令使用的是|这个界定符号。每个管道后面接的第一个数据必定是命令,而且这个命令必须要能够接受标准输出的数据才行,这样的命令才可为管道命令。接下来我们选取grep、sed、awk这三个用于文本处理的管道命令来进行介绍。这三个命令可谓是Li

[转帖] Linux命令拾遗-文本处理篇

https://www.cnblogs.com/codelogs/p/16060413.html 简介# 这是Linux命令拾遗系列的第二篇,本篇主要介绍Linux中与文本处理相关的命令,如xargs、grep、sed、awk等。 本系列文章索引Linux命令拾遗-入门篇 常用文本相关命令# cat

[转帖] Linux文本命令技巧(上)

Linux文本命令技巧(上) 原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介# 前一篇我介绍了awk,这是一个全能的文本处理神器,因为它本身就是一门编程语言了,但对于很多场景,使用Linux预设的一些文本处理命令,会更方便快捷,如grep、sed等。本篇就来介绍

[转帖]使用 sed 处理文本文件

https://www.cnblogs.com/wx2020/p/16269905.html 前言 sed 是一款 GNU 流编辑器,可以按照指定的规则去处理文本文件或流,其强大的功能使用户在命令中快捷地修改文本文件成为可能。 它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输

[转帖]Linux脚本-sed命令在文本首行和尾行插入空行

@Linux脚本-sed命令在文本首行和尾行插入空行 Linux脚本-sed命令在文本首行和尾行插入空行 演示如下: 首先创建需要操作的文本文件 //create a file containing string on ubuntu 20.04 terminal touch shell gedit