`

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 命令详解 #### 概述 `sed`,全称为“stream editor”,是一种功能强大的文本处理工具,常用于Linux和类Unix系统中。它主要用于文本的过滤和转换工作,能够以流的形式读取并处理文本数据。在处理过程...

    linux sed命令详解.docx

    "Linux Sed 命令详解" sed 命令是 Linux 中的一种在线编辑器,它可以处理文本文件,并提供了许多功能强大的编辑功能。sed 命令一次处理一行内容,将当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern ...

    linux sed 命令详解

    Linux中的`sed`(Stream Editor)命令是一种强大的文本处理工具,它能对输入流(标准输入、文件或者管道)进行实时处理。`sed`的工作方式是读取一行文本,对其进行处理,然后输出,接着处理下一行,直到文件末尾。这...

    Unix/Linux sed命令手册

    ### Unix/Linux sed命令手册知识点详述 #### 一、引言 **Sed** (Stream Editor) 是一种在 Unix 和 Linux 系统中用于文本处理的强大工具。它允许用户通过命令行来自动化文本编辑任务,使得批量编辑文件变得更加简单...

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

    ### Linux sed 命令全参数及用法详解 #### 一、sed 命令简介 `sed`(stream editor)是 Linux 和 Unix 系统中的一个强大的文本处理工具,它能够对输入流(标准输入或文件)进行编辑、过滤、替换等操作,并将结果...

    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 教学PPT

    sed命令基本格式** `sed`命令的基本格式通常为: ```bash sed [选项] '命令' 文件 ``` 其中: - **选项**:例如 `-n` 静默模式,不显示未被修改的行;`-i` 直接修改原文件。 - **命令**:例如 `s/old/new/` 替换...

    Linux-02sed.ppt

    什么是sed:主要介绍什么是sed工具,sed工具的主要操作、工作方式以及地址表示方法,在sed命令中使用正则表达式等。 sed命令的常用操作:主要介绍sed命令的注释方法,打印文本,替换文本,删除文本,追加文本,插入...

    Linux下sed命令的用法

    Linux系统下的sed命令是一个流编辑器,它能够对文本文件或标准输入进行处理并输出。sed命令擅长于进行文本的快速查找、替换、删除等操作。本文将详细解读sed命令在Linux环境下的用法,包括其基本语法以及常见用例。 ...

    sed命令使用

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

    Linux_Sed命令详解

    Linux Sed 命令详解 Sed 命令是一种在线编辑器,经常用于 shell 脚本中,对大家有帮助。它一次处理一行内容,将当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用 sed 命令处理缓冲区中...

    Linux shell 用sed命令在文本的行尾或行首添加字符

    Linux shell 用sed命令在文本的行尾或行首添加字符 sed 命令是 Linux shell 中的一个流编辑器,可以用来对文本进行各种处理操作,例如,添加、删除、替换文本中的字符。今天我们将讨论如何使用 sed 命令在文本的行...

    Linux sed命令的使用

    Linux的sed命令是一种强大的文本处理工具,用于对文件或标准输入进行流编辑。它一次处理一行,通过临时缓冲区——模式空间,对每一行进行指定的处理动作,然后输出到屏幕上,除非使用了-i选项来直接修改原文件。sed...

    linux script 好用的sed命令

    【sed命令详解与应用】 ...总之,sed命令是Linux系统中不可或缺的文本处理工具,熟练掌握它可以提高工作效率,解决各种文本处理问题。通过学习和实践,你将能够编写出高效的sed脚本来处理复杂的文本任务。

    LINUX_sed命令详解

    **Linux中的sed命令详解** `sed`(流编辑器,Stream Editor)是Linux系统中一个强大的文本处理工具,常用于处理文件或从输入流中过滤数据。它可以在不改变原文件的情况下,对文本进行查找、替换、删除等操作。下面...

    linux命令中Sed各种使用方式

    Sed 命令中各种使用方式 Sed 命令是一种在线编辑器,它一次处理一行内容。Sed 主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 替换命令 Sed 的替换命令的语法是 `s[address]s/...

Global site tag (gtag.js) - Google Analytics