Sed基础

Sed(Stream EDitor):流编辑器

工作原理:

  将文件中的文本逐行取出,在内存中处理,而不是在源文件中处理;sed的加工车间有两个:pattern space和hold space;sed会根据给定的pattern去匹配每行文本,不管匹配成功或失败,默认都会将pattern space中的内容输出至标准输出,如果匹配成功再执行用户给定的编辑命令。

命令格式:

  sed [OPTIONS] ... ‘script‘ file...

  其中script是地址定界编辑命令的整体

  常用OPTIONS:

    -n:不输出pattern space中的内容至标准输出

    -e script,--expression=script:多点编辑

/*示例*/
sed  -e ‘/^[A]/p‘ -e ‘/^[A]/d‘ test.txt

    -f /PATH/TO/SOME/SED_SCRIPT_FILE:每行一个编辑命令

    -r:支持使用扩展正则表达式(不加则使用基本正则表达式)

    -i[SUFFIX],--in-place[=SUFFIX]:直接编辑源文件

/*示例*/
sed -i ‘/^[h]/d‘ test.txt

  地址定界:

    (1)空地址[什么也不写]:匹配全文

    (2)单地址:

      #:指定行

      /pattern/:被模式匹配到的每一行

/*示例*/
sed -n ‘2p‘ test.txt

    (3)地址范围:

      #,#:第#行到第#行,如1,5

      #,+#:如1,+2,从第一行开始,到第三行

      #,/pattern/:从#行到被pattern匹配到的行之间的行

      /pattern1/,/pattern2/

      $:最后一行

    (4)步进:~

      1~2:所有奇数行

      2~2:所有偶数行

  编辑命令:    

    d:删除模式空间(pettern space)中的内容

    p:显示模式空间中的内容

    a \test:在行后面追加文本‘test’,支持使用\n实现多行追加

    i \test:在行前面插入文本‘test’,支持使用\n实现多行插入

    c \test:把匹配到的行替换为此处指定的test

    w /PATH/TO/SOMEFILE:保存模式空间中匹配到的行至指定文件中

    r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行之后,实现文件合并

    =:为模式匹配到的行打印上行号

    :条件取反,格式为:地址定界!编辑命令

    s///:查找替换,其分隔符可自行定义,常用有s###,[email protected]@@等;

      替换标记:

        g:全局替换

        w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中

        p:显示替换成功的行;

/*示例*/
echo "/var/log/message" | sed ‘[email protected][^/]\+/\[email protected]@‘

  高级编辑命令

    h:把模式空间中的内容覆盖至hold space(保持空间)中

    H:把模式空间中的内容追加至hold space(保持空间)中

    g:把保持空间中的内容覆盖至模式空间中

    G:把保存空间中的内容追加至模式空间中

    x:把两个空间中的内容互换;

    n:覆盖读取匹配到的行的下一行至模式空间中;

    N:追加读取匹配到的行的下一行至模式空间中;

    d:删除模式空间中的行;

    D:删除多行模式空间中的所有行;

时间: 2024-10-05 08:30:08

Sed基础的相关文章

sed 基础用法

sed 以行为单位进行数据替换删除添加选取指定内容 参数: 使用管道: d 删除 a 添加一行内容于指定行的下一行 i 插入一行内容于指定行的上一行 c 用一行自定义内容替换掉某行或连续多行内容 p 打印指定行 s 支持正则表达式的字符替换 例: [[email protected] /data/backup]#cat /etc/passwd | head -6 > studysed [[email protected] /data/backup]#cat studysed root:x:0:0

sed基础用法

在linux系统中,sed的文本处理无疑是一个非常强大的工具,用好sed可以使我们工作效率成倍提升,下面就小结一下sed的常用命令参数,只需关注常用的即可. 选项参数 首先来一发sed --help了解一下常用的参数 # sed --help Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]... -n  忽略打印输出,一般是避免默认输出,只有我们处理的那一行文本会显示在屏幕上 -e  在命令行进行文本的处理

文本处理三剑客之-sed基础用法

文本处理三剑客: grep,egrep,fgrep:文本过滤器 sed:stream EDitor:流编辑器,行 awk:文本格式化工具,报告生成器 sed [OPTION]...'script' [input-file]      script:地址定界编辑命令                [option]           -n:不输出模式空间中的内容至屏幕           -e:多点编辑           -f /path/to/sed_script_file:         

文本处理三剑客之sed基础用法

sed简介: sed是Stream EDitor的缩写,也就是流编辑器的意思,准确的说sed是一个交互式的面向字符流的编辑器,这是因为输入的数据通过sed程序并直接输出到标准输出(可以是显示器或者文件). sed功能: 每次从文件中读取一行通过解释脚本指定的执行动作来处理这一行(一行要历经所有处理动作),然后开始下一行,直到结束.执行动作可以是多个(用:隔开每个动作),解释脚本也可以是多个,可以实现删除,插入,查找替换等等强大功能,但是一般不编辑源文件,也就是说源文件内容不发生变化. sed原理

Linux 程序包管理及sed基础

1. 简述rpm与yum命令的常见选项,并举例 rpm简称包管理器,即RedHat系列发行版的程序包管理工具,由于它遵循GPL规则且功能强大方便,故而广受欢迎: yum是rhel系列系统上rpm包管理器的前端工具,它可以自动执行系统更新,包括依赖性分析和基于"知识库"元数据的过时处理,还可以执行新的包的安装,删除旧的包,为其用户提供更方便快捷的安装程序. rpm命令:rpm [OPTIONS] [PACKAGE_FILE]安装:-i, --install升级:-U, --update,

sed基础语法

sed [-nefr] [n1,n2] sed [-nefri] ‘command’ 输入文本 ' command'有: //a :append,追加新行 //c :cover,覆盖指定的行 //d :delete,删除区间行 //i :insert,在指定行前面插入一行,同a相反 //p :print,和-n配合 //s :substitute,取代 追加 a $>sed '1ahelloworld' test.txt $>sed '1a\ helloworld' test.txt //空格

Linux中sed基础

sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed命令常用参数 常用命令 函数命令 说明 1,n 需要操作

sed的基础应用

sed是一个非交互式的文本编辑器:sed一行一行的处理文件 sed有模式空间(主要活动空间)和缓存空间(辅助空间)两个空间: 模式空间(pattern space)将文件中的一行内容读取到临时缓冲区(模式空间),经过处理后进行输出并清空空间内容: 保持空间(hold space):保持空间不会自动清空也不会主动打印,需要通过命令和模式空间进行交互,主要用于sed的高级命令处理,是sed的辅助空间. 一.正则表达式 很多工具语言都支持使用正则表达式,但是sed中有些正则不能用,sed不支持\d类.

Sed&awk笔记之sed篇(转)

Sed是什么 <sed and awk>一书中(1.2 A Stream Editor)是这样解释的: Sed is a "non-interactive" stream-oriented editor. It is stream-oriented because, like many UNIXprograms, input flows through the program and is directed to standard output. Sed本质上是一个编辑器,