欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Sed —— Linux Sed命令使用指南

程序员文章站 2022-06-21 16:30:24
...

Sed命令

sed编辑器被称为流编辑器,它会执行下列操作:

  1. 一次从输入读取一行数据,
  2. 根据所提供的编辑器命令匹配数据,
  3. 按照命令修改流中的数据,
  4. 将新的数据输出到STDOUT。

sed命令的格式:sed options [script] [file]

 

常用options

  • -i
    替换文件中每一行的aa为a,默认情况下它只替换每行中出现的第一处:

    sed -i 's/aa/a/g' data.txt
    
  • -e
    此选项可执行多个命令:

    sed -e 's/brown/green/; s/dog/cat/' data.txt
    或sed -e 's/brown/green/ s/dog/cat/' data.txt
    
  • -f
    此选项在sed命令中指定文件。如果有大量要处理的sed命令,那么可以将它们放进一个单独的文件中:

    sed -f script.sed data.txt 
    

 

替换标记

让替换命令能够替换一行中不同地方出现的文本,格式:s/pattern/replacement/flags。
有4种可用的替换标记:

  1. 数字:表明新文本将替换第几处模式匹配的地方。

    sed 's/test/trial/2' data.txt
    
  2. g:表明新文本将会替换所有匹配的文本。

    sed 's/test/trial/g' data.txt
    
  3. p:表明原先行的内容要打印出来。

    sed -n 's/test/trial/p' data.txt
    
    -n表示禁止sed编辑器输出,但p替换标记会输出修改过的行,将二者配合使用的效果就是只输出被替换命令修		改过的行。
    
  4. w file:将替换的结果写带文件中。

    sed 's/test/trial/w out.txt' data.txt
    

 

行寻址

sed编辑器中使用的命令会作用于文本数据的所有行,如果只想讲命令作用于特定行,则必须用行寻址。

有以下两种形式:

  1. 以数字形式表示行区间
    • 替换第二行:sed ‘2s/dog/cat/’ data.txt
    • 替换第二行到第三行:sed ‘2,3s/dog/cat/’ data.txt
    • 替换某行开始的所有行:sed ‘2,$s/dog/cat/’ data.txt
  2. 用文本模式来过滤行
    sed ‘/Samantha/s/bash/csh/’ /etc/passwd命令组合,如果需要在单行上执行多条命令,可以用花括号将多余命令组合在一起: sed ‘2{s/fox/elephant/ s/dog/cat/}’ data.txt

 

删除操作

sed 'd' data.txt   		流中的所有文本行都会被删除
sed '3d' data.txt		删除第三行
sed '2,3d' data.txt		删除第2到第三行
sed '3,\$d' data.txt	删除第三及之后所有行
sed '/dog/d' data.txt	删除包含匹配指定模式的行
sed '/^\$/d' data.txt	删除空白行

 

其他

  • 打印匹配行到最后一行的内容

    sed -n '/c/,${//!p}' file
    
  • 多个空格替换为指定字符(^)

    sed -i 's/[[:space:]][[:space:]]*/^/g' data.txt
    
相关标签: Linux linux shell