sed命令之练习集

sed意为流编辑器,在shell脚本和Makefile中作为过滤器使用非常方便,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出。它是一款轻量级流编辑器,它无需直接编辑资料,能够将编辑工作自动化。

sed的工作方式:由标准输入读取编辑文件,读入一行或指定行放到模式空间,然后将所有编辑指令逐一对模式空间的内容进行编辑,之后将结果输出到标准输出,同时清除模式空间,就这样重复之前的操作,直到最后一行,流编辑器停止,源文件不变(除非使用-i选项)。sed主要用来编辑一个或多个文件,简化对文件的反复操作。

我们用如下的图来看看sed的工作流程:

sed的工作流程:将要处理的行读入模式空间,然后进行处理,处理完后该行被输出,模式空间被清空。然后就重复刚才的操作,读入文件中的下一行,直到文件处理完毕。

我们有一点要清楚,因为文件内容在模式空间,并没有改变,除非使用重定向存储输出,因而不会修改源文件。

一般情况下,数据的处理只使用模式空间,按照上图即可完成主要任务。但是我们要知道在某些时候,通过使用保持空间,还可以带来意想不到的效果。

sed主要的命令:

h:把模式空间的内容复制到当前保持缓冲区中,把原来暂存缓冲区的内容清除掉,添加新内容。

H:把模式空间中的内容追加在保持缓冲区中原有内容的后面。

g:把当前保持缓冲区中的内容复制到模式空间,替换掉模式空间中当前行的内容。

G:把当前保持缓冲区中的内容追加到模式空间,追加在保持缓冲区中原有内容的后面。

d:删除模式空间的所有行,并读入下一新行到模式空间中。

D:删除模式空间中的第一行,不读入下一行。

x:交换保持空间和模式空间的内容。

n:读取下一输入行,用下一个命令处理新的行。

N:追加下一输入行到模式空间。

下面我们来做几道练习练练手:

  1. 一个文件里面有许多文本行,给每行结尾添加一空行:

2.一个文件里面有1-5个数字,每个数字分别在一行,将文件中的这几个数字倒序输出。

3.把一个文件里面的某一个或几个匹配的行追加到该文件结尾。

4.把源文件的原来一列的数字改成只有一行。

5.求1-100的和。

第一种方法:

第二种方法:

6.分别打印奇数偶数行。

以上就是自己在学习sed时所作的全部练习,但还远远不够,还要多多练习的!

时间: 2024-08-11 07:41:50

sed命令之练习集的相关文章

通过sed和awk获取集群最新挂掉的DataNode信息

由于之前远程桌面不好使,集群出现了missing block的时候没法登陆远程桌面查看是那些节点由于重启导致DataNode进程挂掉.同时简单的用命令hdfs dfsadmin -report查看又不方便,信息量太多,以下是一个用sed和awk实现的简单的脚本: cat lastDeadNodes.sh hdfs dfsadmin -report > all.log #sed -n '/Dead/,$p' all.log > deadnodes.log sed '1,/Dead/d' all.

正则表达式和sed命令的用法

一.            正则表达式:   正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表示式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.gre

sed 命令+正则表达式

sed是一个非交互性性文本编辑器, 它编辑文件或标准输入导出的文件拷贝.标准输入可能是来自键盘.文件重定向.字符串或变量,或者是一个管道文件.sed可以随意编辑小或大的文件,有许多 sed命令用来编辑.删除,并允许做这项工作时不在现场.sed一次性处理所有改变,因而变得很有效,对用户来说,最重要的是节省了时间.sed必须通过行号和正则表达式指定要改变的文本行 sed怎样读取数据: sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后读命令行或脚本的第一条命令,

shell脚本之sed详解 (sed命令 , sed -e , sed s/ new / old / ... )

(一) Sed是一个非交互性文本流编辑器.它编辑文件或标准输入导出的文本拷贝.vi中的正则表达式命令在sed中大多可以通用. ##sed常用选项 -e script 指定sed编辑命令 -f scriptfile 指定的文件中是sed编辑命令 -n 寂静模式,抑制来自sed命令执行过程中的冗余输出信息,比如只显示那些被改变的行. -i[SUFFIX], –in-place[=SUFFIX] 替换和备份源文件 edit files in place (makes backup if extensi

学习笔记之sed命令使用

一.概述 1.  sed 全称为Stream Editor,就是行编辑器,意味着一次只处理一行文本,sed将被匹配到            的行放到自己特定的空间(通常称为模式空间)中进行编辑:然后再根据结果进行输出显示: 2.  在sed中还有一段空间称为保持空间,sed模式空间中的内容可以与保持空间的内容可以进            行自由互换,实际工作中用处很少,仅作参考: Sed工作流程如图 二.sed命令使用 sed [OPTION]... 'script' [input-file].

sed命令

文本处理三剑客: grep, egrep, fgrep:文本过滤器 sed:Stream EDitor,流编辑器,行     pattem space:模式空间.(基础)     hold space:保持空间 awk:文本格式化工具,报告生成器 语法 sed [OPTION]...  'script'  [input-file] ... script:     地址定界编辑命令         :%s/ 常用选项: -n:不输出模式空间中的内容至屏幕: -e script, --express

sed命令及vim的末行命令

sed:StreamEDitor,流编辑器,以行为单位对一个或多个文件进行编辑处理:每一次sed都会处理给定文件中的一行内容. 在sed处理文本时,将正在处理的当前行存储到临时的缓冲区中,称为"模式空间":用当前行去匹配给定的PATTERN,如果能匹配,则使用command编辑处理:如果不匹配,则默认输出至标准输出:然后继续处理下一行,直到文件的末尾. 默认情况下,sed的所有处理行为不会影响源文件的内容: 我们一般会使用sed命令来自动编辑一个或多个文件,简化对文件的循环操作: se

sed命令总结

在编写shell脚本的过程中,我们经常需要使用sed流编辑器和awk对文本文件进行处理. 什么是sed? sed是一种在线编辑器,它一次处理一行内容.sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结构.默认情况下,所有的输出行都被打印到屏幕上. sed的处理过程是什么? sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下:首先sed先把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上.sed每

linux sed命令详解

Linux环境:Ubuntu16.04 sed命令 http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html http://blog.csdn.net/yiqingnian28/article/details/23133043 正则表达式 http://blog.csdn.net/wzzfeitian/article/details/8842371 sed -help 查看sed的用法 -n, --quiet, --sile