sed 命令使用 (笔记)

简介:

linux 三大文本处理工具 grep sed awk

之前有说过grep 今天来看看sed命令


简介

    sed (Stream EDitor)流编辑器,是非交互式的编辑器,它一次处理一行内容。而且此编辑器默认不会对原文件做修改,如果想要修改使用shell重定向保存结果。默认情况下,所有的输出行都会被打印在屏幕上。

    sed 编辑器逐行处理文件(或输入),并将结果发送到屏幕上。处理过程如下:

    首先sed 把当前正在处理的行保存在一个临时的缓冲区中(也称为模式空间pattern space),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。 sed 每处理完一行就将其缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便运行结束。sed 每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。


sed 基本格式

sed [option] "AddressCommand" file


Address

    大义是指定该文件中的哪一行或者被定位到的行,支持正规则表达式,数字。如果没有指定行,则默认为处理所有行。

  1. startlike,endline 例

        1,100 则定位到文本中的第一行到100行

        $ 表示最后一行

        $-1 表示倒数第二行

2. /RegExp/ 中间是正规则表达式 例

        /^root/ 匹配以root开头的行

3. /pattern/,/pattern2/ 匹配从第一次被pattern1匹配到的行,到第一次被pattern2匹配到的行结束这中间的所有行

4. LineNumber 只给一个数字,则精确匹配到该行

5. startline,+N N是数字  表示从startline 行开始向后匹配N行。


Command

这个是对前边所匹配到的行做字处理 ,比如删除,修改,替换等等

d 删除符合条件的行 

a \"string" 可不加引号, 在符合条件的行的后面追加新行,内容为string. \n 是换行符

i \"string" 可不加引号, 在符合条件的行的前面追加新行,内容为string. string 的意思是这个地方你输出什么,则为该行后边添加什么。

p 显示符合条件的行,默认情况下会使符合的行数显示两次(这个是因为patter space的原因)

r FILE 将指定的文件的内容添加到符合条件的行处

w FILE 将地址指定的范围内的的行另存至指定的文件中

s/parttern/string/ 查找和替换 替换默认只替换每行中被第一次模式匹配到的字符串

    如果都把模式匹配到的都替换需加修饰符

    g 表示全局替换(global)

    i 忽略大小写 ignore

s/// 分隔符可用其它特殊字符替换如 s@@@ s### 

&表示引用前边模式匹配中的字符串 

\(\) 后向引用


[option]

这个是可选选项,即可用也可以不用这个选项

-n 静默模式,不再默认显示模式空间中的内容。

-i 直接修改原文件

-e 可以同时执行多个脚本 

即sed -e "AddressCommand" -e "AddressCommand" -e "AddressCommand" File 

-f FILE 把sed脚本执行到指定的文件

-r 表示使用扩展正则表达式



sed 练习 

1. 删除/etc/grub.conf文件中行首的空白字符
sed 's/^[[:space:]]*//' /etc/grub.conf

2. 替换/etc/inittab文件中“id:3:initdefault:“一行中的数字为5
sed 's/\(id:\)3/\15/' /etc/inittab 

3. 删除/etc/inittab文件中的空白行(由于我linux系统是由#加空白字符组成的行所以我的是删除#开头整行空白的行)
sed '/^#[[:space:]]*$/d' /etc/inittab 

4. 删除/etc/inittab文件中开头的$号
sed 's/^#//' /etc/inittab 

 5. 删除某文件中开头的$号以及后面的空白字符,但要求#号后面必须有空白字符的才删除
sed 's/^#[[:space:]]//' PATH

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1629995如需转载请自行联系原作者


Winthcloud

相关文章
|
6月前
|
Linux Perl
一个神奇的Linux命令-sed
一个神奇的Linux命令-sed
28 1
|
3月前
|
Unix Perl
`sed` 命令完整指南教程
【8月更文挑战第20天】
232 0
|
6月前
|
Linux Perl
linux命令之sed
linux命令之sed
145 2
|
Linux Perl Shell
Linux命令之sed
sed使用参数 [root@www ~]# sed [-nefr] [动作] 选项与参数: -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。
1085 0
|
Shell Perl 自然语言处理
|
MySQL 关系型数据库 Linux