`
icepp
  • 浏览: 10427 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

对sed1line中一些命令的理解 一

阅读更多

先热身一下,选一个sed1line中比较复杂点的命令

 

# reverse each character on the line (emulates "rev") 
#反转一行中每个字符的顺序(类似"rev") 
sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'

 

 

我们选取一行文字是 123
那么执行后模式空间中的内容应该按下边的顺序变化
处理第一行的时候,行中存在”\n”,不匹配/\n/!G; G命令不执行,得
123\n
然后执行s/\(.\)\(.*\n\)/&\2\1/;   &代表s中的整个正则表达式内容

123\n23\n1
执行//D
23\n1
因为是D命令,此时pattern space仍然有内容,脚本停止读入下行,控制转移到脚本顶部,形成循环。往下继续,
模式空间有\n
所以/\n/!G;中G不执行
再来s...
23\n3\n21
再D
3\n21
循环,G不执行
再来s...
3\n\n321
再D
\n321
循环
G和s和D都不执行
执行最后的s/.//
321

这里的难点在于怎样理解D命令。虽然看英文比较头疼,但还是得看下sed man中关于D命令的解释,以更清晰D命令的运作。
下面是D命令的man:
Delete up to the first embedded newline in the pattern space. Start next cycle, but skip reading from the input if there is still data in the pattern space.
翻译成中文:
删除当前模式空间的第一个嵌入行,开始新的循环(控制转到脚本顶部)。但是如果模式空间仍然有数据,那么跳过读取下行。
回顾下sed基础二中的内容:
删除命令D是删除命令d的多行形式,区别在于d删除模式空间的内容并读入新行,从而在脚本顶端重新使用编辑方法。
D只删除多行模式空间的第一个嵌入的换行符以前的内容,它不会导致读入新行,相反,它返回到脚本的顶端,将这些指令应用与模式空间剩余的内容。
这条命令就完全清楚了。

分享到:
评论

相关推荐

    SED单行脚本快速参考 / sed1line

    英文原版《 HANDY ONE-LINERS FOR SED》,都是一些使用sed写单行脚本的技巧!

    基本的SED命令有大量的SED命令

    基本的SED命令基本的SED命令基本的SED命令基本的SED命令基本的SED命令

    AWK命令详解 sed命令详解

    AWK命令详解 sed命令详解 AWK命令详解 sed命令详 AWK命令详解 sed命令详解解

    windows下cmd程序sed命令所需文件

    windows下cmd程序sed命令所需文件,记得配环境变量

    一些sed命令

    压缩包里包含有一个word文档,说我平时使用sed命令的记录,一个学习笔记,还有一个sed使用手册。sed是个强大的流编辑器,灵活使用可以减少很多麻烦。

    LINUX_sed命令详解

    Sed命令是linux下的一个非常有用的命令,特别是在shell脚本中经常会使用到他。 熟悉他你会觉得非常有趣哦! 1.sed -n '2'p filename 打印文件的第二行。 2.sed -n '1,3'p filename 打印文件的1到3行 3. sed -n '/...

    linux sed 命令详解

    linux sed 命令详解 资源收集 linux sed 命令详解 资源收集

    linux sed命令详解

    linux sed命令详解

    linux命令中Sed各种使用方式

    linux命令中Sed各种使用方式

    Linux/Unix sed命令中文详解图

    处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并...

    sed命令使用

    Linux sed命令 Linux 命令大全 Linux 命令大全 Linux sed命令是利用script来处理文本文件。 sed可依照script的指令,来处理、编辑文本文件。 Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换...

    sed one line

    sed one line pdf sed one line pdf sed one line pdf sed one line pdf sed one line pdf

    sed命令调研文档(PDF)

    这意味着您必须将要对数据执行的命令插入到命令行或要处理的脚本中。当显示它时,请忘记您在使用 Microsoft Word 或其它大多数编辑器时拥有的交互式编辑文件功能。sed 在一个文件(或文件集)中非交互式、并且不加...

    sed命令大全

    Linux sed命令 相关请见资料内 sed awk都有 Linux sed命令 相关请见资料内 sed awk都有

    sed操作命令手册.pdf

    sed操作命令手册.pdf

    Shell编程-字符截取命令-sed命令

    Shell编程-字符截取命令-sed命令

    sed命令详解.docx

    sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间...sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件

    快速理解linux流编辑器sed命令

    本文章是关于理解linux流编辑器sed命令。

    sed很强大的文本操作命令

    sed很强大的文本操作命令

    sed的常用命令思维导图

    sed的常用命令大全集合,适用于小白的快速入手。

Global site tag (gtag.js) - Google Analytics