sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓存区中,称为“模式空间”,
接着用sed命令处理缓存区的内容,处理完成后,把缓存区的内容送往屏幕。接着处理下一行,这样不断重复,直到
文件末尾。文件内容本身并没有改变。
使用sed命令有2种形式:
1.sed [options] 'commamd' file
2.sed [options] -f script file
例子:
sed '2d' test.txt //删除test.txt文件中的第2行
sed '2,$d' test.txt //删除第2行到最后一行的所有内容,$代表最后一行
sed '/test/'d test.txt //删除指定文件中所有包含test的行
sed 's/test/mytest/g' test.txt //在整行范围内把test替换为mytest。如果没有g,则只替换每一行第一个匹配的
test
sed -i 选项会直接操作文件,而不会把它读入缓存区
sed '$a sdf' test.txt //在最后一行后面添加一行,内容为sdf
a表示,在选择行的后面添加一行,而不是在选定行的末尾添加字符串,所'$a \test'和'$a test'效果一样,都是添
加一行
如果一次添加多行,可以用\表示,它表示换行符
sed '1 a\
dd1\
dd2\
dd3' test.txt
不能在一行写成这样: sed '1 a \dd1\dd2\dd3' test.txt,这样会当做一行内容错误,且结果是新增了一行内容“
dd1dd2dd3”
-n表示在标准输出上输出特定的行,例如被p选择的行
sed -n '/line/ p' test.txt //打印包含line的所有行
sed -n '3,6 p' test.txt // 打印第3行到第6行
sed '5 q' test.txt //打印头5行
如果一个文件hello里面的内容是这样的
3,6 p
则可以这样使用:
sed -n -f hello test.txt //-f表示要使用的程序名称
sed '1 i cxm' test.txt //在第1行的前面插入1行,行的内容为cxm
sed '1 c hahah' test.txt //把第1行的内容替换为hahah
sed 's/sd/kkk/ w tmp' test.txt //把修改过的行输出到tmp文件中
sed '2,4 w tmp2' test.txt //把2到4行的内容输出到tmp2文件中
sed '2,4 !w tmp3' test.txt //把没有选中的行输出到tmp3文件中
sed 's/^./\t&/' test.txt //(^.)可以匹配第一个字符不是空格的所有行,\t代表一个TAB字符,&表示正则表达式
匹配到真的值,用于缩进。
sed -n 'n;p' test.txt //原本sed的执行原理是逐行读取到模式空间,N呢就促使sed把下一行内容也同时读取到模
式空间待命。但是,打印只打印最后一行。到了最后一行,为什么没有输出呢?原来N还有另外一个特性:当无法处
理下一行内容时,N则会中止退出,所以后面的命令也不会再执行。
sed -n '$!n;p' test.txt //$!n表示对最后一行不再执行n命令。
sed一般工作在pattern space,每次从input中取一行数据到pattern space中,然后经过一些处理,将一行数据放入
output中,然后output会输出到屏幕(默认为屏幕,也可以为文件),此时pattern space还存储着这一行数据,直
到input再放入第二行数据取代第一行数据。
hold space可以理解为sed的缓冲区
g:将hold区的内容复制到pattern区中。pattern区中的原来的内容会丢失;
G:将一个换行符和hold区中的内容追加到pattern区中的内容之后;
h:将pattern区中的内容复制到hold区中。hold区中的原来内容将会消失;
H:将一个换行符合pattern区中的内容追加到hold区中的内容的之后;
x:交互pattern区和hold区中的内容;
2,$G
h
$!d
例如:
sed '2,$G;h;$!d' cxm.sh
每一行的的内容都要经过这三个命令处理,hold space里面一般不存储内容,除非你自己往里面添加内容。如果不使用d删除,那么每次处理后pattern区中的内容都会显示出来
上面的指令可以把文件的内容倒过来显示,!表示取非,即除了最后一行,其它的行都删除
sed 's/ *$//' 2个空格后接*$,表示行末的一个或多个空格。对清理行末的空格非常方便
不管指令有多么复杂,这些指令每次都顺序处理一行内容。
分享到:
相关推荐
以下是一些常见的sed命令及其用法: - `a\`:在当前行后添加一行文本。 - `b label`:跳转到标记处继续执行。 - `c\`:替换当前行的内容。 - `d`:删除当前行。 - `D`:删除当前行及之后的所有重复行。 - `i\`:在...
Linux sed命令 Linux 命令大全 Linux 命令大全 Linux sed命令是利用script来处理文本文件。 sed可依照script的指令,来处理、编辑文本文件。 Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换...
压缩包内的`sed命令使用.docx`、`Sed命令学习笔记.pdf`、`sed使用手册.pdf`都是非常好的学习资料,它们将更深入地讲解sed命令的高级用法,包括模式匹配的细节、流编辑的技巧以及在实际工作中的应用案例。通过阅读...
本篇文章将详细介绍如何在Windows的CMD程序中使用`sed`命令以及相关知识点。 首先,`sed`命令主要用于对文本文件进行搜索、替换、删除等操作,其语法结构通常为`sed [选项] '动作' 文件`。在Windows中,由于默认并...
本文将详细解读sed命令在Linux环境下的用法,包括其基本语法以及常见用例。 首先,sed命令的基本语法格式为: ``` sed [选项] '脚本' [文件] ``` 其中,选项部分可以用于控制sed的行为,例如-i选项可以用于直接...
本文将详细介绍sed命令的使用,包括各种参数、正则表达式的应用、文件处理技巧等内容。 首先,sed命令的基本结构为:sed [选项]... [脚本] [输入文件]。其中,脚本是由一系列编辑命令组成,输入文件通常为文本文件...
Linux shell 用sed命令在文本的行尾或行首添加字符 sed 命令是 Linux shell 中的一个流编辑器,可以用来对文本进行各种处理操作,例如,添加、删除、替换文本中的字符。今天我们将讨论如何使用 sed 命令在文本的行...
- **使用脚本文件**:可以将多个sed命令写入一个文件中,然后使用“`-f`”选项加载此文件。这种方式适用于编写复杂的sed脚本。 - **示例**:创建名为“`myscript.sed`”的文件,包含以下内容: ```sed s/tiger/...
### 基本的SED命令详解 #### 一、SED命令概述 SED(Stream Editor)是一种强大的文本处理工具,主要用于对文件进行批量编辑操作。它能够执行诸如替换、删除、插入等多种文本处理任务,尤其适合处理结构化数据或...
下面我们将深入探讨sed命令的用法。 1. **打印特定行** - `sed -n '2'p filename`: 打印文件`filename`的第二行。 - `sed -n '1,3'p filename`: 打印文件`filename`的第一到第三行。 - `sed -n '/Neave/'p ...
### Linux Sed 命令详解 #### 概述 `sed`,全称为“stream editor”,是一种功能强大的文本处理工具,常用于Linux和类Unix系统中。它主要用于文本的过滤和转换工作,能够以流的形式读取并处理文本数据。在处理过程...
**SED** (Stream Editor) 是另一个在 Unix 和类 Unix 系统中广泛使用的文本处理工具,主要用于过滤和转换文本。 #### SED 的基本概念 1. **地址**: 定义命令作用于文本中的哪些行。 2. **命令**: 执行的具体操作,...
标题中的"shell ant sed命令"涉及的是三种在Unix/Linux及类似操作系统中常用的命令行工具,它们在IT领域尤其是软件开发和系统管理中扮演着重要角色。 1. **Shell**:Shell是操作系统提供的一种命令行解释器,允许...
通过`-f`选项,可以读取包含`sed`命令的脚本文件,或者使用`-e`多次指定命令。 在Shell脚本中,`sed`常被用来预处理数据、过滤日志、替换文本、格式化输出等。例如,你可以用`sed`删除日志文件中特定的错误行,...
Linux sed 命令 Linux sed 命令是利用脚本来处理文本文件。 sed 可依照脚本的指令来处理、编辑文本文件。 Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。 语法 sed [-hnV][-e][-f]...
**SED命令完全解读** SED(Stream Editor)是Linux操作系统下的一款强大的文本处理工具,它可以对文本文件中的每一行进行操作,如查找、替换、删除、插入等。掌握SED命令能够帮助用户快速高效地处理大量文本数据,...
### sed命令详解 #### 1. 概述 sed(stream editor)是一种强大的文本处理工具,主要用于对文本数据流进行过滤和转换。它是一种非交互式的编辑器,意味着用户通过命令行来操作文本而非直接在文件中进行编辑。sed的...
处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并...
**sed命令详解** **1. sed命令的基本概念** sed(stream editor)是一个强大的文本处理工具,主要用于对文本文件进行非交互式的编辑操作。它的工作方式是逐行读取输入文件,将当前处理的行存储在临时缓冲区(模式...
sed命令可以与其他Linux命令结合使用,如管道`|`,重定向`>`和`,形成强大的文本处理流水线。 总之,sed命令是Linux系统中不可或缺的文本处理工具,熟练掌握它可以提高工作效率,解决各种文本处理问题。通过学习和...