Linux——Sed命令使用指南

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
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值