linux 高效 sed 命令

sed 命令

linux 下的一个编辑命令 跟grep awk 一起成为linux 三剑客。

sed 全称 Stream EDitor​(流之编辑)

sed的两种命令​

  • sed [options] 'command' file(s)
  • sed [options] -f scriptfile file(s)
  • 1定位
  • sed '1,3d'​ 删除第一到第三行。单引号是必须的。最后一行 是$d
  • sed '4,$d'​ test.txt 从第四行开始 一直删到文件结尾

a

  • sed ‘2a pear’​ 从第三行加上 pear 字样
  • ​i
  • sed '2i bingtang'​  在第二行前 加上bingtang
  • 加两行字 是
  • sed '2a bingtang ......\
  • >pear'​
  • 每一行之间都要添加【\​】
  • 2 以​行为单位的替换与显示。
  • 参数 c ​
  • sed '2,5c I love bingtang xueli'​ 将2-5行的内容取代成 I love bingtang xueli
  • -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
  • -p
  • 列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  • ​sed -n "3,5p" test.txt 仅仅列出 3-5行
  • sed "/root/p"​ 打印有root关键字的行
  • sed '/root/d'​ 删除带有root关键字的行
  • 搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行:
 nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}' 1  root:x:0:0:root:/root:/bin/blueshell

如果只替换/etc/passwd的第一个bash关键字为blueshell,就退出

nl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}'    1  root:x:0:0:root:/root:/bin/blueshell
  • 删除第三行到末尾的数据,并把bash替换为blueshell
  • sed -e '3,$d' -e 's/bash/blueshell/'
  • 直接修改文件内容

    sed -i 's/\.$/\!/g' regular_express.txt​

    由於 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增『# This is a test』!​

    sed -i '$a # This is a test' regular_express.txt

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注