• SED是什么
    SED是Stream EDitor的缩写,也就是SED是一个流编辑器。它的处理方式和Gvim/emacs完全不一样。更多的是将SED用作文本处理而不是文本编辑。
  • SED用法说明
    一般linux系统都会内置SED命令。输入sed会打印出help信息。从help信息可以看到其用法如下:
  • sed [options]... 'command' files...

    sed的options说明:
    -n : 等效- -quiet,- -silent,静默模式,取消自动打印模式空间
    -e ‘expr’: 等效 - -expression= ‘expr’,将脚步表达式添加到运行列表。
    -f srcipt.f : 等效- -file= srcipt.f.添加脚本文件到运行列表
    -i: 等效- -in-place,直接修改文件
    -r: 脚步中开启扩展正则表达式支持
    上述为主要的选项说明,其他的选项可查看help得到详细信息。

  • SED处理原理
    SED以行为单位进行处理,当前处理的行存放在临时缓存区,称为模式空间(pattern space),sed依次处理模式空间内容,并输出到终端,如此循环直到处理完所有的行。
    为了只对感兴趣的行进行处理,需要使用定址,定址:定位到想要编辑的行,如1,5表示1到5行,/test/ 匹配到test的行。定址可以使用数字和正则表达式匹配并且可以混合使用。
  • SED支持的命令
    a\:当前行加入一行。eg
    sed '$a\\#this is the end' test.txt
    其中 ’$’匹配最后一行,‘\’使用需要进行转义。命令会在文件最后一行后添加注释’#this is the end’
    i\:当前行前加入一行。eg
    sed '1i\\#add a header' test.txt
    d:删除。eg
    sed '2,$d' test.txt
    除了第一行外,其他行被删除
    p:打印。默认sed会将模板空间打印到终端,因此使用’p’命令会打印两次。需要结合-n选项进入静默模式,则只打印定址的或匹配的行。
    s/re/sting: 替换命令,用string的字符串替换正则表达式re。
    g:行内全面替换。eg
    sed 's/PATH/path/g' test.txt
    将所有的PATH替换成path。
    r:读文件
    sed '1r include.h' include.c
    将文件include.h的内容添加到include.c的第一行下面。
    w:写文件
    sed '1w include.h' include.c
    将include.c的第一行写入到include.h。
  • SED常见元字符集
    ^:行首
    $:行尾
    .:任意一个字符
    *:0个或多个字符
    []:指定范围字符
    [^]::不在指定范围字符,取非操作
    (..):保存匹配字符
    &:搜索匹配字符串保存值。eg:
    s/david/hello & /
    将david替换为hello david
    \<:词首
    >:词尾
    x{m}:重复x字符m次。
    x{m,}:重复x字符最少m次。
    x{m,n}:重复x字符m~n次。
  • 更多相关文章

    1. 字符串处理函数strcat和strtok
    2. 对linux字符设备的理解(整体架构)
    3. gdb捕获syscall条件和字符串比较
    4. Linux C 字符串输入函数 gets()、fgets()、scanf() 详解
    5. Linux生成随机字符串
    6. 关于mysql jsp字符编码的问题解决
    7. 如何将“u00e9”转换为一个utf8字符,在mysql或php中?
    8. 【整理】更改MSSQL默认字符集
    9. 5 - SQL Server 2008 之 四则运算、比较运算、逻辑运算及字符连

    随机推荐

    1. Android使用Eclipse搭建NDK开发环境
    2. android-支持多种屏幕[屏幕支持概览] 五
    3. Android对返回键进行处理的方式
    4. 在Android的评论屏幕上实施网络呼叫的最
    5. 如何将值发送到Ionic中具有条件的其他页
    6. 将常量文本放在EditText中,这应该是不可编
    7. 使用mediaplayer + surfaceview来播放视
    8. android try catch并不影响性能
    9. Lance老师UI系列教程第三课->QQ登录注册
    10. getCacheDir()和getFilesDir()方法区别