shell编程----sed命令
sed命令介绍
Linux sed命令是利用脚本来处理文本文件,sed可以依照脚本的指令来处理、编辑文本文件,sed主要来自动编辑一个或者多个文件、简化对文件的反复操作、编写转换程序等。
sed命令
语法:sed [option] '{command}[flags]' [filename]
命令选项
-e script 将脚本中指定的命令添加到处理输入时执行的命令中 多条件、一行中要有多个操作
-f script 将文件中指定的命令添加到处理出入时执行的命令中
-n 抑制自动输出
-i 编辑文件内容
-i.bak 修改时同时创建.bak备份文件
-r 使用扩展的正则表达式
! 取反(跟在模式条件后与shell有所区别)
sed常用内部命令
a 在匹配后面添加
i 在匹配前面添加
p 打印
d 删除
s 查找替换
c 更改
y 转换 N D P
flags选择
数字 显示新文本替换的模式
g: 表示用新文本替换现有文本的全部实例
p: 表示打印原始的内容
w filename 将替换的结果写入文件
例子展示,数据源
1> sed 's/dog/cat/' cat.txt 将每行的第一个dog替换成cat
2> sed 's/dog/cat/2' cat.txt 将每行的第二个dog替换成cat
3> sed 's/dog/cat/g' cat.txt 将每行的所有dog替换成cat
4> sed '3s/dog/cat/p' cat.txt 将第三行打印出来
5> sed '3s/dog/cat/w mfile' cat.txt 将第三行修改过的内容保存到mfile文件中
6> sed -n '3s/dog/cat/p' cat.txt 抑制内存的输出,只打印出想要的
7> sed -e 's/brown/green/;s/dog/cat/' cat.txt 同时执行多条命令
注意:以上替换文本的时候,源文件中的文件并没有发生实质性的替换
8> sed -i 's/dog/cat/g' cat.txt 加上-i命令选项,源文件中的文本才发生了真正的替换
9> sed -i.bak 's/dog/cat/g' cat.txt 将修改的文件备份到cat.txt.bak中,而cat.txt中没有发生变化
10> sed -n '/^(root)(.*)(bash)$/p' /etc/passwd 将/etc/passwd文件中以root开头以bash结尾的字符串打印出来
sed命令小技巧
$= 统计文本有多少行
1> sed -n '$=' cat.txt
2> sed '=' cat.txt 打印cat.txt内容的时候加上行号