sed 使用

用途

  • 从log中提取有用内容
  • 批量替换文字

使用指南

命令格式

格式1

1
sed [-e] 'instruction' filename

‘instruction’ 是 sed的指令,这种方式将指令写在命令行上,为避免和shell向冲突,要将一些特殊字符(空格、$、*)用单引号括起来。

只有命令行上给出多个指令时,才需要使用 -e 选项。例如:

1
sed -e 's/ MA/, Massachusetts/' -e 's/ PA/,Pennsylvania/' targetfile

格式2

1
sed -f scriptfile filename

脚本文件示例:

1
2
s/CA 95470/----/
s/MA/++ Massachusetts ++/

指令的格式

1
/正则表达式/执行的动作/

类似ed编辑器,大部分动作由单个字母表示。

处理过程

每次从输入文件读取“符合搜索条件的一行”,生成该行备份,并对备份行进行sed操作。

  • 整个过程不会对输入文件产生改动。

使用技巧

阻止输入行自动显示

-n 选项可以阻止输入行自动显示。设置之后,每个要生成输出的指令,都必须包含打印命令 p 。

例如:

1
sed -n -e 's/MA/Massachusetts/p' targetfile

打印符合条件的行

1
sed -n -e '/正则表达式/p' targetfile