美文网首页
2018-09-22 sed 命令详解

2018-09-22 sed 命令详解

作者: 凤凰_0949 | 来源:发表于2018-09-23 15:22 被阅读0次

lunixs三大基本文本处理工具:grep sed awk

字符处理用法均涉及正则表达式,我们先学习正则

REGEXP: regular expression

pattern:

正则表达式分为2类:

basic REGEXP:基本

Extended REGEXP:扩展

基本正则表达式:

扩展的正则表达式:

字符匹配:

·:任意单个字符

?:其前字符0次或1次

+:匹配其前字符至少1次

{m,n}:不用加反斜线,

分组:(),\1,\2,\3……

或者

a|b :or的意思

grep -e =egrep

fgrep:fast 快速搜索,不支持正则表达式

sed基本用法:

Stream Editor

    行编辑器:逐行进行(全屏编辑器:vi)

sed每次把一行读取到模式空间,处理文本后输出到屏幕,sed对原文件不做任何处理,仅对模式空间中的文件做处理。

sed:模式空间

sed  'addressCommand'  file……

对这个文件中符合地址的行执行该命令

Address:

    1.StartLine,EndLine:1,100

    $:最后一行

    $-1:倒数第二行

    2./RegExp/ :/^root/

    3./pattern1/,/pattern2/ :第一次被模式1匹配到的行开始到第一次被模式2匹配到的行结束。

    4.LineNumber指定的行

    5.StartLine,+N:从startLine行开始,向后的N行,一共是N+1行。

command:

    d:删除符合条件的行

    p:显示符合条件的行(print)

    -n:静默模式     

不显示模式空间的内容,只显示命令相关内容

    a \string:在指定的行后面追加新行,内容为"string"

    i \string:在指定的内容前面添加新行,内容为string

    r  filename:将指定文件的内容添加至符合条件的行数,$r,用于合并文件。

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

    s/pattern/string/修饰符:查找并替换,将每一行中pattern替换成string,默认只替换每行第一次遇到的模式匹配到的string

        加修饰符

            g:全局替换

            i:忽略字符大小写

        s///:s###,s@@@

        l..e:

        &:引用模式匹配整个串

        也支持后向引用

        -i:直接修改原文件

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

        -f /PATH/TO/SED_SCRIPT:

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

练习:将history中的空格删除

        history | sed ‘s#[[:space:]]##g'

习题:1.删除/etc/grub.conf文件中行首的空白符

sed  -r  's@^ [[:space:]]+@@g'  /etc/grub.conf

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

  +:匹配其前字符至少1次

   g:全局替换

2.替换/etc/inittab文件中“id:3:initdefault:”一行中的数字为5;

sed  's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g'  /etc/inittab

    \(\) :分组

    \1:第一个左括号以及与之对应得右括号包含得所有内容

    \2:第二个左括号以及与之对应得右括号包含得所有内容

    [0-9]替换成5

3.删除/etc/inittab文件中的空白行;

    sed   '/^$/d'   etc/inittab

     d:删除符合条件的行

    ^$:空白行

4.删除/etc/inittab文件中开通的#号

    sed  's@^#@@g'   etc/inittab

    ^:锚定行首,这个字符后面得字符串必须出现在行首

5.删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;

    sed  -r  's@#[[:space:]]+@@g'   /etc/inittab

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

      +:匹配其前字符至少1次

6.删除某文件中以空白字符后面跟#类的行中开头的空白字符及#

    sed -r  's@^[[:space:]]+#@@g'   /etc/inittab

7.取出一个文件路径的目录名称;???

    echo  "/etc.rc.d" | sed -r  's@^(/.*/)[^/]+/?@\1@'

相关文章

  • sed常用操作命令

    sed: stream editor , 流/行 编辑器 ; sed 命令详解: sed [OPTIONS].....

  • Linux-sed-1

    #############20190820- sed命令用法详解 sed命令用法 sed是一种流编辑器,它是文本处...

  • [2020春假]Linux下的文本操作(sed篇)

    Chapter4 sed替换命令详解 sed的替换命令是最常用的,也是讲解最多的。sed的模式空间 sed的基本工...

  • 2018-09-22 sed 命令详解

    lunixs三大基本文本处理工具:grep sed awk 字符处理用法均涉及正则表达式,我们先学习正则 REGE...

  • sed命令详解

    原文链接:sed命令_Linux sed 命令用法详解:功能强大的流式文本编辑器 http://man.linu...

  • Linux sed命令实例详解

    Linux sed命令实例详解 功能说明:利用script来处理文本文件。 语法:sed [-hnV][-e][-...

  • SED命令详解

    sed命令用来对文本文件行进行处理; 格式 命令行选项 通过示例学习

  • sed命令详解

    一、简介 Sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储...

  • sed 命令详解

    sed 即 stream editor,一个简单而强大的文本解析转换工具,1973-1974年期间由贝尔实验室的 ...

  • sed命令详解

    1. 简介 sed命令是一个很强大的文本编辑器,可以对来自文件、以及标准输入的文本进行编辑。 执行时,sed会从文...

网友评论

      本文标题:2018-09-22 sed 命令详解

      本文链接:https://www.haomeiwen.com/subject/ayrfoftx.html