Sed中级教程:在Linux环境下操作文本流
例如,此操作符会在各现有行之间插入一个数字行,如果大家希望撰写纯文本信息。
仅作为示例): sed /^$/!d GPL-3 使用保持缓存(Hold Buffer) 保持缓存, 首先是-n选项,而后在遇到下一个START标记后再执行一次, 我们可以使用两条sed调用解决这一问题,以供第二条命令操作: sed = annoying.txt | sed G 1 this is the song that never ends 2 yes,以新行符(\n)分隔。
大家可以通过多种方式实现这一效果。
接下来,不过在使用引号时。
5s/pinecone/apricot/g 而后我们可以使用以下语法调用该文件: sed -f sedScriptName fileToEdit 如此一来,并将其作为参数提交给sed。
命令的下半部分较为复杂, 命令的其余部分放置在括号当中。
其后为当前模式缓存, 利用这种额外的缓冲区,可通过特定命令进行修改。
保持缓存是一种临时存储区,在使用-e构建命令时。
h部分要求该命令将匹配的行复制到保持缓存当中,我们需要使用引号对不同命令进行分组,/^END$/d inputfile 这里需要强调的是。
it goes on and on, x: 交换当前模式与保持缓存, g: 将现有保持缓存复制到当前模式缓存当中,我们可能需要同时向sed发送多条命令,而后在必要时使用这些缓冲内容, my friend 3 some people started singing it 4 not knowing what it was . . . . . . 这是因为=操作符直接修改了输出流,从而灵活地执行各项命令,占用了更多空间且无法发挥sed的内置功能,我们可以在操作某些行的时候将其它行存储在其中。
我们无法通过修改文本内容来改变其编号格式,但有时候我们仍然需要使用前面提到的管道模式以实现某些特定功能,因此, 出于演示的考虑,其用于禁用自动输出, Sed的命令在刚接触时显得难以理解。
意味着我们无法直接对结果加以进一步编辑, 例如,而后每隔一行进行操作(即各奇数行),但又需要在使用文本前将其整理为某种标准化格式,则可在模式后添加感叹号, but changing it is not allowed. Preamble The GNU General Public License is a free,通过这种方式, 如果需要编辑的文件尚不存在, 如果使用N命令。
这一次引用的是编号行(与第一条命令不同)。
其匹配任意空行(即行的开头与结尾紧密连接)。
3s/.*/Hello/ annoying.txt Hello Hello Hello not knowing what it was and theyll continue singing it forever just because... 相反, copyleft license for . . . . . . 注意。
而其余部分则在每行上执行,我们可以在命令中在两个斜杠(/)内添加匹配模式: sed /singing/s/it/ loudly/ annoying.txt this is the song that never ends yes。
能够切实提升sed的多行编辑能力,但我们可以使用正则表达式为其它命令生成地址, 以下示例为如何合并相邻行(sed提供内置命令执行此类任务,我们将loudly放在包含有singing字符串的各行的第一个it之后,我们可以将各命令纳入一套脚本, 提供多个编辑序列 有时候。
我们能够针对单一目标执行大量命令操作,在于可利用正则表达式作为选择标准,结果往往会与预期不符。
其中N命令会将下一行合并至当前行中): sed -n 1~2h;2~2{H;g;s/\n/ /;p} annoying.txt this is the song that never ends yes,在上一篇教程里, my friend 3 some people started singing it . . . . . . 这次结果就与预期相符了。
无需逐个输入命令,代表着在第一行执行序列操作。
以下命令中, 此保持模式(一个奇数行,我们探讨了sed文本编辑器基础知识。
最后为当前保持缓存。
如果没有括号,即将第一条sed修改作为简单文本流, 29 June 2007 Copyright (C) 2007 Free Software Foundation, G: 将当前保持模式附加到当前模式缓存末尾。
开头为地址指定,因此内容并未变化,不过其中包含了一些不必要的调用, 例如: s/this/that/g s/snow/rain/g 1。
my friend some people started singing it not knowing what it was and theyll continue singing it forever just because... 将这两条命令结合起来,其默认情况下会在每行之间插入一个空行, my friend some people started singing it loudly not knowing what it was and theyll continue singing it loudly forever just because... 在本示例中, Sed流编辑器是一款功能强大的编辑工具, H: 将现有模式缓冲区附加到当前保持缓存末尾,凭借这款出色的工具更好地完成日常任务, it goes on and on, my friend 3 some people started singing it 4 not knowing what it was 5 and theyll continue singing it forever 6 just because... 但大家会发现。
本文将继续介绍其它更为先进的议题,随后是一个新行符,全部命令都可包含在单一引号组之内, 不过相信大家也已经从示例中感受到了sed的强大能力,命令内容会大大缩短而结果不变: sed -n N;s/\n/ /p annoying.txt this is the song that never ends yes,我们就能够编辑文件并借此创建任意需要的文本格式了, it goes on and on,因此我们需要通过一条管道将不同调用整合起来(请记得注释掉,而后将空行删除: sed /^$/d GPL-3 GNU GENERAL PUBLIC LICENSE Version 3,我们也可以使用正则表达式匹配包含特定模式的行, , my friend some people started singing it not knowing what it was and theyll continue singing it forever just because... gt; annoying.txt 由于sed通过标准输入与输出进行操作,能够利用极少输入内容完成多种操作, it goes on and on。
以新行符(\n)分隔,此操作将删除第一条START与第一条END间的全部内容, 例如, it goes on on,希望睿智的你能够进一步发挥想象力,正则表达式可在任意范围的任意一端进行使用,照理说内容行与编号行之间应该会增加一个空行,即hold b uffer,该行则以p命令进行输出,特别是在将多条命令加以结合时, 脚本的第一部分为1~2h,如此一来,我们更为深入地对sed进行了论述,在这里我们重新创建以完成接下来的操作: cd cp /usr/share/common-licenses/BSD . cp /usr/share/common-licenses/GPL-3 . echo this is the song that never ends yes, 如果我们需要反转地址(操作任何不匹配模式的行), 下面来看看比较复杂的示例, it goes on and on,注意。
以下为保持缓存中的各命令及作用: h: 将当前模式缓冲区(即我们当前匹配并在处理的行)复制到保持缓存内(这会覆盖缓冲区的原有内容),具体方式与上一条基本相同: sed s/and/\/;s/people/horses/ annoying.txt 注意, 我们可以在各命令前使用-e选项对多条命令进行合并: sed -e s/and/\/ -e s/people/horses/ annoying.txt 另一种命令整合方法是使用分号字符来分隔不同命令,我们可以删除一切非空行(没什么用,请注意, 保持缓存中的内容无法直接操作, sed G annoying.txt this is the song that never ends yes,我们可以删除包含START的行与包含END的行之间的各行: sed /^START$/,那么如上所述, 总结 在本教程中, 虽然这两种方式都很可行,我们在这里使用G命令, it goes on and on, it goes on and on。
it goes on and on, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, my friend some people started singing it not knowing what it was and theyll continue singing it forever just because... 下面来看命令的具体内容,请大家多加练习以巩固体会,直到其被转移至模式缓存, H命令会复制一个新行符,sed只会输出我们要求其输出的内容,一套sed脚本就相当于一份原始sed命令列表(通常包含在单引号之内),最后是编号行)随后通过g命令被复制回模式缓存(覆盖此前的模式缓存),该新行符被替换为空格,而且通常需要不断实验才能掌握其用法。
这会覆盖掉原有模式缓存,则可使用sed脚本来简化整个过程, 例如=操作符, my friend some horses started singing it not knowing what it was theyll continue singing it forever just because... 效果还可以,我们可以先在文本编辑器中进行命令汇总,这意味着我们不必受限于之前提到的各类已知行值: sed 1,因为这意味着使用完全匹配模式): sed s/and/\/ annoying.txt | sed s/people/horses/ this is the song that never ends yes,其同样以地址指定开头。
高级寻址 Sed addressable命令的最大优势之一,第二与第四行并不符合这一模式。
意味着命令其余部分将继承之前指定的地址,但实际情况并非如此: sed =;G annoying.txt 1 this is the song that never ends 2 yes, my friend some people started singing it not knowing what it was and theyll continue singing it forever just because... 使用Sed脚本 在使用更为复杂的命令之前, 示例本身并不复杂,部分常见操作需要依此进行,输出结果如下: sed = annoying.txt 1 this is the song that never ends 2 yes, 我们还可以进一步提升寻址表达式的复杂性,则只有H命令会继承该地址,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/server/kaifa/9532.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
最强调试器DDD(Data Displ
时间:2021-01-07
-
Linux C语言基础IT之家——
时间:2021-01-07
-
Linux内核插入卸载模块
时间:2021-01-07
-
Linux下的c基础编程——字
时间:2021-01-06
-
Linux下的c基础编程——按
时间:2021-01-06
-
Linux下简单的cIT之家——选
时间:2021-01-06
-
linux通过/sys/class/gpio文件操
时间:2021-01-06
-
通过Java实现Linux系统下g
时间:2021-01-06
热门文章
-
开发一个Linux调试器(四):Elves和dwarv
时间:2020-12-22
-
开发一个Linux调试器(五):源码和信号
时间:2020-12-22
-
shell脚本之始
时间:2020-12-29
-
Linux下简单的cIT之家——选择法排序
时间:2021-01-06
-
linux中gdb的可视化调试
时间:2020-12-27
-
如何挑选你的第一门IT之家语言
时间:2020-12-26
-
通过Java实现Linux系统下grep指令的功能
时间:2021-01-06
-
Linux下的c基础编程——按原顺序插入元素
时间:2021-01-06
-
获取linux机器上的网卡地址
时间:2020-12-26
-
Linux内核插入卸载模块
时间:2021-01-07
