文档编辑sed(stream editor)命令
sed命令gnu官网
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
sed 是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
-e<>或--expression=<>以选项中指定的script来处理输入的文本文件
-f <script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h 或--help显示帮助。
-n 或--quiet或--silent仅显示script处理后的结果(取消默认输出)。
-V 或--version显示版本信息。
-i 在适当的地方编辑文件(如果提供SUFFIX则进行备份),直接修改原文件,修改文件内容后直接替换原文件.此选项会直接修改源文件,要慎用。
此选项指定要就地编辑文件。GNU sed通过创建一个临时文件并将输出发送到该文件而不是标准输出来实现这一点,这个选项包含-s。当到达文件末尾时,将临时文件重命名为输出文件的原始名称。如果提供了扩展名,则用于在重命名临时文件之前修改旧文件的名称,从而生成一个备份副本)。因为-i接受一个可选参数,所以它后面不应该跟着其他短选项:
动作说明:
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
不经常使用的命令
- D : If pattern space contains no newline, start a normal new cycle as if the d command was issued. Otherwise, delete text in the pattern space up to the first newline, and restart cycle with the resultant pattern space, without reading a new line of input.
如果模式空间不包含换行符,则启动一个正常的新周期,就像发出了d命令一样。否则,删除模式空间中的文本直到第一个换行符,并使用生成的模式空间重新启动循环,而不读取新的输入行。 - h : Replace the contents of the hold space with the contents of the pattern space.
将保持空间的内容替换为模式空间的内容。 - H : Append a newline to the contents of the hold space, and then append the contents of the pattern space to that of the hold space.
将一个换行符附加到保持空间的内容,然后将模式空间的内容附加到保持空间的内容。 - g : Replace the contents of the pattern space with the contents of the hold space.
将模式空间的内容替换为保持空间的内容。 - G : Append a newline to the contents of the pattern space, and then append the contents of the hold space to that of the pattern space.
向模式空间的内容追加一个换行符,然后将保持空间的内容追加到模式空间的内容。 - x : Exchange the contents of the hold and pattern spaces.交换保持空间和模式空间的内容。
定址
可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定 。