[Linux]sed命令

[Linux]sed命令

命令介绍

格式:sed [-nefr] [动作]

选项与参数:

选项 含义
-n 使用silent模式,只有sed特殊处理的行才会被列出。
-e 直接在指令列模式上进行sed的动作编辑。
-f 直接将sed的动作写在一个文件内,-f filename
-r,-E 使用正则语法
-i 直接修改读取的文件内容,而不是由屏幕输出。(危险操作)

动作说明:[n1[,n2]]function

n1,n2:可选项,一般用于选择进行动作的行数

有以下的function

  • a:新增,后接字符串,这些字符串会在指定行的下一行出现。
  • c:取代,后接字符串,将指定行的字符替换。
  • d:删除,删除指定行。
  • i:插入,后接字符串,这些字符串会在指定行的上一行出现。
  • p:打印,通常搭配-n一起用。
  • s:取代,通常搭配正则表示。

命令示例

  • 增加,a
    在第二行后增加i'm skybiubiu并输出。
nl /etc/passwd | sed "2a i 'm skybiubiu"

  • 删除,d

    去掉2~5行输出。

nl /etc/passwd | sed '2,5d'

  • 取代,c

    将2~5行取代为i'm skybiubiu打印输出。

nl /etc/passwd | sed "2,5c i'm skybiubiu"

  • 打印,p

    搭配-n,输出1~5行的内容。

nl /etc/passwd | sed -n '1,5p'

  • 搜索并取代,s

    只将输出内容中匹配的部分替换,不会修改源文件。

sed 's/AAAAA/BBBBB/' /tmp/test.txt

  • 修改文件内容(危险操作), -i

    该操作会直接修改原文件内容,比较危险,建议先备份。

sed -i 's/AAAAA/BBBBB/' /tmp/test.txt
sed -i '$a CCCCC' /tmp/test.txt

posted @ 2021-06-10 20:19  SkyBiuBiu  阅读(64)  评论(0编辑  收藏  举报