`

Linux SED 命令

阅读更多

一. SED初瞰.

$ sed -e 'd' /etc/services

用一个编辑命令 'd' 调用 sed。sed 打开 /etc/services 文件,将一行读入其模式缓冲区,执行编辑命令(“删除行”),然后打印模式缓冲区(缓冲区已为空)。然后,它对后面的每一行重复这些步骤。这不会产生输出,因为 "d" 命令除去了模式缓冲区中的每一行!

在该例中,还有几件事要注意。首先,根本没有修改 /etc/services。

$ sed -e '1d' /etc/services | more

 除了前面有 '1' 之外,该命令与第一个 'd' 命令十分类似。如果您猜到 '1' 指的是第一行,那您就猜对了。与第一个示例中只使用 'd' 不同的是,这一次使用的 'd' 前面有一个可选的数字地址。通过使用地址,可以告诉 sed 只对某一或某些特定行进行编辑。

$ sed -e '1,10d' /etc/services | more

地址范围: 删除1到10的行; 再分页显示;

sed -e '1d' shell.txt | awk -F "=" '{print $1}' >> my.ini

 对shell.txt文件输入SED的缓冲区,删除第一行 | 对每行进行=拆分,取第一个元素 | 把最后的结果集输入文件my.ini

二. 规则表达式:

$ sed -e '/^#/d' /etc/services | more

规则 表达式  描述 
/./ 将与包含至少一个字符的任何行匹配
/../ 将与包含至少两个字符的任何行匹配
/^#/ 将与以 '#' 开始的任何行匹配
/^$/ 将与所有空行匹配
/}^/ 将与以 '}'(无空格)结束的任何行匹配
/} *^/ 将与以 '}' 后面跟有 零或多个空格结束的任何行匹配 
/[abc]/ 将与包含小写 'a'、'b' 或 'c' 的任何行匹配
/^[abc]/ 将与以 'a'、'b' 或 'c' 开始的任何行匹配 

在这些示例中,鼓励您尝试几个。花一些时间熟悉规则表达式,然后尝试几个自己创建的规则表达式。可以如下使用 regexp:

$ sed -e '/regexp/d' /path/to/my/test/file | more

这将导致 sed 删除任何匹配的行。然而,通过告诉 sed 打印regexp 匹配并删除不匹配的内容,而不是与之相反的方法,会更有利于熟悉规则表达式。可以用以下命令这样做:

$ sed -n -e '/regexp/p' /path/to/my/test/file | more

 请注意新的 '-n' 选项,该选项告诉 sed 除非明确要求打印模式空间,否则不这样做。您还会注意到,我们用 'p' 命令替换了 'd' 命令,如您所猜想的那样,这明确要求 sed 打印模式空间。就这样,将只打印匹配部分。
目前为止,我们已经看到了行地址、行范围地址和 regexp 地址。但是,还有更多的可能。我们可以指定两个用逗号分开的规则表达式,sed 将与所有从匹配第一个规则表达式的第一行开始,到匹配第二个规则表达式的行结束(包括该行)的所有行匹配。例如,以下命令将打印从包含 "BEGIN" 的行开始,并且以包含 "END" 的行结束的文本块:

$ sed -n -e '/BEGIN/,/END/p' /my/test/file | more

 如果没发现 "BEGIN",那么将不打印数据。如果发现了 "BEGIN",但是在这之后的所有行中都没发现 "END",那么将打印所有后续行。发生这种情况是因为 sed 面向流的特性 -- 它不知道是否会出现 "END"。

http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-1/#1

分享到:
评论
1 楼 greatwqs 2013-06-20  
使用sed+grep统计a在在文本中出现的次数:
echo  'abdaaccabca' | sed 's/./&\n/g' | grep -c a

相关推荐

    linux sed命令详解

    linux sed命令详解

    linux sed 命令详解

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

    linux sed命令详解.docx

    linux sed命令详解.docx

    linuxsed命令全参数及用法详解.docx

    linuxsed命令全参数及用法详解.docx

    Unix/Linux sed命令手册

    Unix,Linux中sed命令的详解。

    linux sed命令详解(推荐)

    sed命令是一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作。sed是按行来处理文本内容的。在shell中,使用sed来批量修改文本内容是非常方便的。 sed命令的选项 sed [选项] [动作] 选项与参数...

    实战基本的Linux sed命令示例代码

    它使您能够使用Linux sed命令在操作系统中执行文本文件操作。 与大多数Linux应用程序一样,sed可以处理管道输入,这使它成为一种有效的脚本工具。您可以将其用作基本的查找和替换工具,如下面的示例命令所示,该命令...

    Linux sed 命令用法详解

    Linux sed 命令 Linux sed 命令是利用脚本来处理文本文件。 sed 可依照脚本的指令来处理、编辑文本文件。 Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。 语法 sed [-hnV][-e][-f]...

    Linux sed命令的使用

    主要介绍了Linux sed命令的使用,帮助大家更好的理解和学习Linux的使用,感兴趣的朋友可以了解下

    sed命令使用

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

    Linux下sed命令的用法

    文章主要介绍Linux下sed命令的用法,感兴趣的朋友可以看看。

    sed命令大全

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

    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 系统 linux 系统 sed 命令使用方法linux 系统 sed 命令使用方法sed 命令使用方法

    linux命令中Sed各种使用方式

    linux命令中Sed各种使用方式

    Linux/Unix sed命令中文详解图

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

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

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

    linux script 好用的sed命令

    sed 命令的詳細解說與範例 看了後 馬上就會把sed用得很好

Global site tag (gtag.js) - Google Analytics