AI智能
改变未来

Linux:三剑客之一 sed 的练习一


sed 流编辑器(非交互式编辑器) stream editor

(如果在使用sed的过程中发现’‘内的符号或者其他有冲突,可以尝试把’\’换成\”\”)

  • 工作模式:逐行处理

  • 语法:

    sed [选项] ‘行的定位 动作’ 文件…

  • 选项:

    -n:静默输出,关闭模式空间的输出,不会输出未匹配到的行 一般与p命令结合使用
    -e:允许进行多项编辑,也就是说对同一行做多次处理、. 可以做多点编辑
    -e ‘动作1’ -e ‘动作2’ == ‘动作1;动作2’
    -f: 后接sed脚本,指定执行的sed脚本(将模式动作写到文件中)
    -r:允许使用扩展正则(r 和 i连用时,i要放到r后面)
    -i:直接作用于原文件 没有输出 在使用-i之前一定先不加-i看看效果(如果确定写入文件之后,不要加-n,否则会把修改了的内容覆盖原来所有内容)
    -i.bak:修改原文件之前进行备份

换成大写字母:sed \'s/[a-z]/\\u&/g\' /tmp/pass查看2,4,8行: sed -n \'2p,4p,8p\' /tmp/pass查看2到5行:sed -n \'2,5p\' /tmp/pass查看奇数行: sed -n \'1~2p\' /tmp/pass查看第三行到最后一行:sed -n \'3,$p\' /tmp/pass查看除了第三行到最后一行的所有行:sed -n \'3,$!p\' /tmp/pass查看除了第二行以外的所有行:sed -n \'2!p\' /tmp/pass查看文件中含有root的行:sed -n \'/root/p\' /tmp/pass从root开始输出行,直到sh结束输出:sed -nr \'/root/,/sh$/p\' /tmp/pass对ip a命令的内容进行处理,筛选出IP:ip a|sed -n \'/global/p\'|sed \'s/^.*inet//g\'|sed \'s/\\/20.*$//g\'将/etc/passwd的第二个root替换:sed \'s/root/ROOT/2\' /etc/passwd将/etc/passwd的每行第二个root开始替换:sed \'s/root/ROOT/g2\' /etc/passwd将/etc/redhat-release的文件内容读入到/tmp/pass的第一行后面:sed \'1r /etc/redhat-release\' /tmp/pass将/tmp/pass符合条件的行写入到/tmp/a.txt: sed \'/root/ w /tmp/a.txt\' /tmp/pass在/tmp/pass的第二行后面追加hello world:  sed \'2 a hello world\' /tmp/pass在/tmp/pass的第二行前面插入helloworld: sed \'2 i hello world\' /tmp/pass一一对应替换:sed \'y/abc/ABC/\' /tmp/pass将/tmp/pass的第二行的内容改为hello world: sed \'2 c hello world\' /tmp/pass打印/tmp/pass第二行的下一行: sed -n \'2{n;p}\' /tmp/pass打印/tmp/pass前8行后不继续打印: sed  \'8q\' /tmp/pass- sed的高级应用:将第一第二行换位:sed \'1h;1d;2G\' /etc/passwd将前三行进行倒叙:sed \'1h;1d;2G;2h;2d;3G\' zheng将内容倒叙:sed \'1{h;d};$!{G;h;d};G\' zheng
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Linux:三剑客之一 sed 的练习一