Sed —— Linux Sed命令使用指南
程序员文章站
2022-06-21 16:30:24
...
Sed命令
sed编辑器被称为流编辑器,它会执行下列操作:
- 一次从输入读取一行数据,
- 根据所提供的编辑器命令匹配数据,
- 按照命令修改流中的数据,
- 将新的数据输出到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种可用的替换标记:
-
数字:表明新文本将替换第几处模式匹配的地方。
sed 's/test/trial/2' data.txt
-
g:表明新文本将会替换所有匹配的文本。
sed 's/test/trial/g' data.txt
-
p:表明原先行的内容要打印出来。
sed -n 's/test/trial/p' data.txt -n表示禁止sed编辑器输出,但p替换标记会输出修改过的行,将二者配合使用的效果就是只输出被替换命令修 改过的行。
-
w file:将替换的结果写带文件中。
sed 's/test/trial/w out.txt' data.txt
行寻址
sed编辑器中使用的命令会作用于文本数据的所有行,如果只想讲命令作用于特定行,则必须用行寻址。
有以下两种形式:
- 以数字形式表示行区间
- 替换第二行:sed ‘2s/dog/cat/’ data.txt
- 替换第二行到第三行:sed ‘2,3s/dog/cat/’ data.txt
- 替换某行开始的所有行:sed ‘2,$s/dog/cat/’ data.txt
- 用文本模式来过滤行
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
下一篇: sed 使用