首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Sed打印多行,而不是匹配组

Sed是一种流式文本编辑器,常用于对文本进行处理和转换。在Sed中,打印多行而不是匹配组可以通过以下方式实现:

  1. 使用N命令:N命令用于将下一行添加到模式空间中,并在两行之间插入一个换行符。可以使用N命令来打印多行文本。

例如,假设我们有一个名为file.txt的文件,内容如下:

代码语言:txt
复制
Line 1
Line 2
Line 3
Line 4

我们可以使用以下Sed命令来打印包含"Line 2"和"Line 3"的多行文本:

代码语言:txt
复制
sed -n '/Line 2/{N; /Line 3/p}' file.txt

输出结果为:

代码语言:txt
复制
Line 2
Line 3

解释:

  • -n选项用于禁止自动打印模式空间内容。
  • /Line 2/用于匹配包含"Line 2"的行。
  • {N; /Line 3/p}表示在匹配到"Line 2"的行后,使用N命令将下一行添加到模式空间中,并使用/Line 3/p打印包含"Line 3"的行。
  1. 使用模式空间和标签:可以使用标签和分支命令来处理多行文本。

例如,假设我们有一个名为file.txt的文件,内容如下:

代码语言:txt
复制
Line 1
Line 2
Line 3
Line 4

我们可以使用以下Sed命令来打印包含"Line 2"和"Line 3"的多行文本:

代码语言:txt
复制
sed -n '/Line 2/{:start; N; /Line 3/!b start; p}' file.txt

输出结果为:

代码语言:txt
复制
Line 2
Line 3

解释:

  • -n选项用于禁止自动打印模式空间内容。
  • /Line 2/用于匹配包含"Line 2"的行。
  • :start定义一个名为"start"的标签。
  • N命令用于将下一行添加到模式空间中。
  • /Line 3/!b start表示如果模式空间中不包含"Line 3",则跳转到标签"start"。
  • p命令用于打印模式空间中的内容。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《Linux命令行与shell脚本编程大全》第二十一章 sed进阶

解决方案,sed编辑器包含了三个可用来处理多行文本的特殊命令: N:将数据流中的下一行加进来创建一个多行(multiline group)来处理 D:删除多行中的一行 P:打印多行中的一行 21.1.1...21.1.3 多行打印命令P 单行打印命令p(小写):会打印模式空间中的所有行 多行打印命令P(大写):会打印模式空间中的第一行 例子: xcy@xcy-virtual-machine:~/shell...$ sed -n 'N; /header/P' data5.txt xcy@xcy-virtual-machine:~/shell/21zhang$ 说明:第一个是单行打印,第二个是多行打印...21.2 保持空间 1.模式空间(pattern space)是一块活跃的缓冲区,在sed编辑器上执行命令时它会保存待检查的文本,但它并不是sed编辑器保存文本的唯一区间。...测试命令会根据替换命令的结果跳转到某个标签,不是根据地址跳转。

1.7K90

Linux:sed命令详解

,追加在原有内容的后面 l 列出非打印字符 p 打印行 n 读入下一输入行,并从下一条命令不是第一条命令开始对其的处理 q 结束或退出 sed r 从文件中读取输入行 !...匹配除换行符以外的单个字符 /m..y/  匹配包含字母 m,后跟两个任意字符,再跟字母 y 的行 * 匹配零个或多个前导字符 /my*/  匹配包含字母 m,后跟零个或多个 y 字母的行 [] 匹配指定字符内的任一字符.../[Mm]y/  匹配包含 My 或 my 的行 [^] 匹配不在指定字符内的任一字符 /[^Mm]y/  匹配包含 y,但 y 之前的那个字符不是 M 或 m 的行 \(..\) 保存已匹配的字符...sed '/my/p' datafile   #默认情况下,sed把所有输入行都打印在标准输出上。如果某行匹配模式my,p命令将把该行另外打印一遍。     ...H命令则把每次匹配hrwnag的行都追加保存在暂存缓冲区。

7K60

Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)「建议收藏」

G 把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面 l 列出非打印字符 p 打印行 n 读入下一输入行,并从下一条命令不是第一条命令开始对其的处理 q 结束或退出sed...匹配除换行符以外的单个字符 /m..y/ 匹配包含字母m,后跟两个任意字符,再跟字母y的行 * 匹配零个或多个前导字符 /my*/ 匹配包含字母m,后跟零个或多个y字母的行 [] 匹配指定字符内的任一字符.../[Mm]y/ 匹配包含My或my的行 [^] 匹配不在指定字符内的任一字符 /[^Mm]y/ 匹配包含y,但y之前的那个字符不是M或m的行 \(..\) 保存已匹配的字符 1,20s...sed ‘/my/p’ datafile #默认情况下,sed把所有输入行都打印在标准输出上。如果某行匹配模式my,p命令将把该行另外打印一遍。...H命令则把每次匹配hrwnag的行都追加保存在暂存缓冲区。

9.5K60

一篇文章学会shell工具篇之sed

-e:允许对输入数据应用多条sed命令编辑。 -i:将修改结果直接写入到读取数据的文件,不是由屏幕输出。(1.修改了文件; 2.由cat可查看) -f: 指定sed脚本的文件名。...action: a:追加,在当前行后添加一行或多行。 c:行替换,用c后面的字符串替换原数据行。 i:插入,在当前行前插入一行或多行。 p:打印,输出指定的行。...n:输出模式空间的行,读取下一行替换当前模式空间的行,接着执行下一条处理命令不是第一条命令。 N:读入下一行,追加到模式空间行后面,此时模式空间中有两行。... 例1:给每行后面添加一行空行 例2:用sed模拟倒序(tac)打印的过程 例3.追加匹配行到文件末尾 例4:将一列内容变为一行 例5:求出1-100的求和 例6:打印输出奇数行和偶数行...,后跟零个或多个 t 字母的行; []:匹配指定字符内的任一字符 /t[eE]st/ 匹配包含test 或 tEst 的行; [^]:匹配不在指定字符内的任一字符 /t[^eE

95670

Linux sed命令详解

如果没有指定地址,sed将处理输入文件的所有行。 sed命令功能 命令 功能 a\ 在当前行后添加一行或多行。...G 把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面 l 列出非打印字符 p 打印行 n 读入下一输入行,并从下一条命令不是第一条命令开始对其的处理 q 结束或退出...常见命令参数 p==print d:delete =:打印匹配行的行号 -n 取消默认的完整输出,只要需要的 -e 允许多项编辑 -i 修改文件内容 -r 不需要转义 注意:& 符号在sed命令中代表上次匹配的结果...打印1-5行,并显示行号 sed -n -e '1,5p' -e '='  yum.log ? 仅仅显示匹配字符串的行号 sed -n '/root/p' yum.log ?...打印匹配行的内容和符号【相当于后面又根据关键词查询了一次】 sed -n -e '/root/p' -e '/root/=' yum.log ?

4.9K20

Linux||sed命令使用讲解

与其他命令不同的是sed命令在处理数据之前,需要预先提供一规则,sed会按照此规则来处理数据。...操作:范围+命令 范围设定,可以采用两种不同的方式来表达: 指定行数:比如'3,5'’'表示第三至第五行;'3,$'示第三行至文件最后一行。...模式匹配:比如/^[^Aa]/表示匹配行首不是以A或a开头的行。 操作必须用单/双引号扩住,[]的内容可以省略。...接下来给大家举几个例子,我在test.txt文件中写入了这么3句话 a新增 在第二行后新增有what的一行 sed "2a what" test.txt 在第二行后新增多行what:sed "2a...删除第二至最后一行 sed "2,$d" test.txt i插入 在第二行前新增有what的一行 sed "2i what" test.txt p打印打印第一和第二行 sed -n "1,2p

1.1K30

你应该学习正则表达式

这允许我们在文本块(不是代码行)中匹配年份,这对于搜索如段落文本非常有用。 \b ——字边界 (19|20) ——使用或(|)操作数匹配’19′或’20′。...\b搜索一个单词字符前面或者后面没有另一个字符的地方,因此它搜索单词字符的缺失,\s明确搜索空格字符。\b特别适用于我们想要匹配特定序列/单词的情况,不是特定序列/单词之前或之后有空格的情况。...要在终端中预览结果,不是替换原来的文本,只需省略-i标志。 注意——尽管上述命令适用于大多数Linux发行版,但是macOS使用BSD实现是sed,它在其支持的Regex语法中受到更多的限制。...要在MacOS上使用sed,并具有体面的正则表达式支持,我建议使用brew install gnu-sed安装sed的GNU实现,然后从命令行使用gsed不是sed。...强化的解析器几乎可用于所有机器可读的语言,NLP工具可用于人类语言——我强烈建议你使用其中一种,不是尝试编写自己的语言。

5.3K20

Linux常用命令 sed 使用简述

Linux/UNIX中的sed命令是Stream Editor文本流编辑的缩写,它能同时处理多个文件多行的内容,比如文搜索,查找和替换,插入或删除。...sed是一个强大的文本流编辑器。可以做插入、删除、搜索和替换(替换)。 Linux/UNIX中的sed命令支持正则表达式,从而可以执行复杂的模式匹配。...-f filename 则可以执行filename内的sed命令; -r 让sed命令支持扩展的正则表达式(默认是基础正则表达式); -i 直接修改读取的文件内容,不是由屏幕输出...,i \后面跟上字符串s(多行字符串可以用\n分隔),则会在当前选中的行的前面都插入字符串s; p: print即打印,该命令会打印当前选择的行到屏幕上; s: 替换,通常s命令的用法是这样的...4、d命令用法 删除第5行到末尾 [linuxmi@linux:~/Linux迷] $ sed '5,$d' LinuxMi.py 5、p命令用法 p是屏幕打印

1.3K20

sed 使用教程 - 通读篇(30分钟入门系列)

追加 a 和插入功能一样,只是再匹配的行后面追加(并不是再本行追加,而是下一行) shell> sed '/cat/,+2a ------------!'...行替换 c 命令格式:[address1[,address2]]c Replace text 需要注意的是这里指定的行范围将会被一起替换成一行,不是每行每行的替换,仔细观察下面的例子,将cat出现的行及后两行全部替换成一行...sed多行处理功能 前面所看到的sed编辑器命令都是针对单行数据执行操作的,在sed编辑器读取数据流时,它会基于换行符的位置将数据分成行,让后再每行中重复的执行脚本命令。...除此之外sed也提供了三种可以多行处理的功能; 1....输出多行中的第一行 P P命令用于输出N命令创建的多行文本的模式空间中的第一行,也就是说读进来两行,仅输出第一行。

4.1K240

linux sed命令使用

常用选项 sed命令有一些常用选项,这里列举一些常用的: -n:不自动打印模式空间的内容,只有在命令中显式指定打印时才会打印; -i:在原文件中直接修改,不是输出到标准输出或指定文件中; -e:允许对文件进行多个编辑动作...如果省略g,则只替换每行中的第一个匹配项。 2. 删除操作 sed命令可以用来删除文件中的某些行。删除操作的格式为: sed '行号d' 文件名 其中,d表示删除操作。...可以通过指定多个行号来删除多行,例如: $ sed '2d;3d' test.txt line 1 上面的命令将文件中的第二行和第三行删除。 3. 插入操作 sed命令可以用来向文件中插入文本。...打印操作 sed命令可以用来打印文件的某些行。打印操作的格式为: sed '行号p' 文件名 其中,p表示打印操作。...可以通过指定多个行号来打印多行,例如: $ sed -n '2p;3p' test.txt line 2 line 3 上面的命令将文件的第二行和第三行打印出来,其中-n选项表示禁止自动打印模式空间的内容

3.7K10

Sed三剑客入门与进阶

,可以执行多条sed命令 -f 或--file=:#以选项中指定的script文件来处理输入的文本文件 -i :#用于sed修改的结果直接修改读取数据的文件,不有...l 打印显示特殊字符(行尾以及tab标志) n 读取下一个输入行,用下一个命令处理新的行不是用第一个命令。 N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。...d;s/.*=//' } WeiyiGeek.奇数与偶数行打印 _总结_: sed 匹配是贪婪模式匹配到越多; 正则扩展命令sed之-r选项 描述:使用了该-r选择后就能使用正则表达式的扩展语法,在写一些正则符号前无需添加...查操作 描述:采用p命令进行打印常常和-n选项联用,在前面介绍-n的时候有介绍 ifconfig | sed -nr 's#([0-9]+\.){3}[0-9]{1,3}#[&]#gp' #打印匹配的行...从文件读入:r命令 描述:file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面 #示例1.读取file文件中的到并且插入到查找到test字符串的后面

3.1K10

Linux三板斧之:sed

sed的常用选项与动作 sed有许多选项与操作来控制编辑动作: -i: 直接修改文件内容,不是输出到屏幕 -n: 不输出未修改的行,只输出被sed修改过的行 a: 在指定行的下一行添加一行或多行文本...d: 删除指定行 s: 查找并替换,类似于vi中的替换功能 y: 将字符翻译成其他字符 p: 打印指定行 i: 在指定行前插入一行或多行文本 c: 替换指定行 g: 全局替换,即不止替换每一行的第一个模式匹配...将a翻译成d,b翻译成e,c翻译成f sed -n '10,20p' /etc/passwd # 只打印第10到20行 sed '2i\hello' /etc/passwd...结合正则表达式,sed 可以轻松编辑复杂的文本文件。sed 常用于批量修改文件内容、过滤与格式化文本等。...使用 sed 编辑过的文件,内容和格式看上去就像手工编辑过的一样,这使得 sed 成为自动化文本处理不可多得的工具。 总之,sed 是 Linux 环境下必不可少的命令之一。

13720

Linux sed 命令的使用

的后面 h 拷贝模板块中的内容到缓冲区; H 追加模板块的内容到缓冲区; l 列表不能打印内容的清单; n 读取下一个输入行,用下一个命令处理新的行不是用第一个命令 N 追加下一个输入行到模板块后面并在二者间嵌入到一个新行...,改变当前行号码 p 打印模板块的行 P 打印模板快的第一行 w filename 写并追加模板块到file末尾 W filename 写并追加模板块的第一行file末尾 !...* 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。 [] 匹配一个指定范围内的字符,如/[ss]ed/匹配sedSed。...实例: 替换操作 替换文本中的字符串 sed 's/StringOriginal/NewString/' filename -n -p 参数,只打印发生变化的行 sed -n 's/StringOriginal...' filename file被读进来,显示在String匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。

3.1K100

Linux进阶 03 文本处理三驾马车

先记录下来以后要多看看~1 grep1.1 定义grep是一种强大的文本搜索工具,它能使用正则表达式匹配模式搜索文本,并把匹配的行打印出来1.2 格式grep options pattern file1.3...2 sed2.1 定义sed:流编辑器,一般用来对文本进行增加、删除、修改、查找增删查改sed只是修改打印出来的内容,不会修改原文件2.2 用法sed [-options] 'script' file(...sed与grep的比较grep查询命令比较简单,同时有高亮sed查询命令比较复杂,sed中p经常与-n合用,查询结果没有高亮sed可以一边进行查询,一边进行修改并打印(连用s)y进行一对一替换,a替换成...| sed 'y/ATCG/TAGC/'多行序列的反向互补:多行反向互补行与行之间的顺序也要颠倒过来!...Homo开头的文件为Y染色体的基因注释文件把第三列是feature是gene的行打印出来,标记行数less -S Data/Homo_sapiens.GRCh38.102.chromosome.Y.gff3

15520
领券