sed   N和$!N 的理解使用

用图示详细说明。

1.有123.txt文件,内容如下:

我的想法是把hello world 替换成 halo

2.用N命令,测试替换,如下:

N的作用是追加下一行到pattern space(我的理解是临时存储空间)。

具体命令执行过程分析:首先读入第一行 hello到pattern space,然后命令N,追加下一行 world! my name is

am.到pattern space。注意:这个时候pattern space里有两行,就是:hello 和 world! my name is am.两行。然后执行

s/\n//;这个命令是把两行变成一行。然后再执行s/hello world/halo/。执行命令结束后,清空pattern space。读取新的一行

进入pattern space,这里是读取第三行 hello.然后又开始以上的操作。直到读完全不的数据。

注意问题:123.txt里的最后一行的hello world 没有被替换掉。

产生问题原因分析:123.txt总共9行,sed N命令毎执行一次处理两行,第9行是单行,执行到

这一行,因为N命令,也需要追加一行,没能执行成功N,所以替换失败。

3.$!N。用这个命令可以解决最后一行未能替换的问题。图示如下:

$!N命令解释:最后一行不执行N命令。

4.整个操作图示:

时间: 2024-08-12 20:02:30

sed   N和$!N 的理解使用的相关文章

字符及文本处理之sed:sed使用高级命令

三.sed高级编辑命令      t,T,D,P,n,N,H,h,g,G 前面的基本用法已经可以满足基本应用,但sed还有一些高级用法(装X利器),要学习sed高级命令首先要理解清楚sed的另一个缓冲区"保持空间". 前面基本用法中也有提到模式空间,即为处理文件中一行内容的一个临时缓冲区.处理完一行之后就会把模式空间中的内容打印到标准输出,然后自动清空缓存. 而这里说的保持空间是sed中的另外一个缓冲区,此缓冲区正如其名,不会自动清空,但也不会主动把此缓冲区中的内容打印到标准输出中.而

理解linux sed命令

理解linux sed命令(2010-02-27 18:21:20) 标签:linuxshellsed替换 分类:革命本钱 1. Sed简介sed是一种在线编辑器,它一次处理一行内容.处理时,把当 前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反

sed grouping 操作理解

echo "aGsdff:bDEf" >>employees [email protected]:/home/koyaku# sed 's/\([^,]*\):\([^,]*\)/\U\1\L\2/' employees Jones,Bob,232-78-3456Jackeson,Jane,,Federer,Jack,xxx-xx-xxxxMaw,Michael,1879-0Alexander,Sally,345-89-8095Beder,Ioana,567-34-9802

sed && awk 第二章runsed代码理解

#! /bin/sh 2 for x 3 do 4 echo "editing $x: \c" 5 # if test "$x"=sedscr; then 6 # echo "not editing sedscript!" 7 if [ "$x" = "sedscr" ];then 8 echo "bi not editing sedscript!" 9 elif test -s $x;

sed入门详解教程

sed 是一个比较古老的,功能十分强大的用于文本处理的流编辑器,加上正则表达式的支持,可以进行大量的复杂的文本编辑操作.sed 本身是一个非常复杂的工具,有专门的书籍讲解 sed 的具体用法,但是个人觉得没有必要去学习它的每个细节,那样没有特别大的实际意义.网上也有很多关于 sed 的教程,我也是抱着学习的心态来学习 sed 的常见的用法,并进行系统的总结,内容基本覆盖了 sed 的大部分的知识点.文中的内容比较简练,加以实际示例来帮助去理解 sed 的使用. 一.写在前边 1.sed介绍 se

Linux高级文本处理之sed(四)

模式空间是sed内部维护的一个缓存空间,它存放着读入的一行或者多行内容.但是模式空间的一个限制是无法保存模式空间中被处理的行,因此sed又引入了另外一个缓存空间--模式空间(Hold Space). 一.保持空间 保持空间用于保存模式空间的内容,模式空间的内容可以复制到保持空间,同样地保持空间的内容可以复制回模式空间.sed提供了几组命令用来完成复制的工作,其它命令无法匹配也不能修改模式空间的内容. 操作保持空间的命令如下所示: 这几组命令提供了保存.取回以及交换三个动作,交换命令比较容易理解,

shell脚本--sed工具

sed sed:它叫做流式编辑器,它的工作场景一般是在编辑器中,把一段文本按行读入sed中然后按指定的方式输出,这是它最基本的用法. 一.sed的基本操作: 1./pattern/action pattern为正则表达式,对满足pattern的行作action操作 例如 这条命令和grep基本一样,其中-n的意思是只将执行后面指令的显示出来,如果不加-n选项则会把所有信息显示以便并且把匹配到的多显示一遍,p的意思是打印,如果改成d则是删除.-i的话则会修改源文件 2./pattern/s/pat

<linux小白进阶> sed指令的基本用法

本文内容较简洁,适合linux有点基础的菜鸟... 功能介绍之后都有例子便于理解,希望对大家能起到帮助作用 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 1.

三剑客之老二sed详解

    三剑客之老二sed 第1章 sed介绍 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令效率不高,这就好比一块空地准备搭建房子,请了10个师傅拿着铁锹挖地基,花了一个月的时间才挖完,而另外一块空地则请了个挖土机,三下五除二就搞定了,这就是效率.而在linux中的"挖土机"有三种型号:顶配awk,中配sed,标配grep.使用这些工具,我们