sed是Linux上重要的文本处理工具,可以对文件内容进行替换、删除、新增、选取特定行等功能。下面通过sed常用实例介绍sed命令的使用方法。
打印文件内容
(1)打印指定行
sed -n '1p' /etc/passwd #打印第1行 sed -n '10p' /etc/passwd #打印第10行 sed -n '$p' /etc/passwd #打印最后1行
(2)打印模式匹配行
sed -n '/root/p' /etc/passwd #打印包含root字符串的行
sed -n '/r.*p/p' /etc/passwd #打印匹配正则表达式r.*p的行
(3)打印指定范围内容
sed -n '1,3p' /etc/passwd #打印第1-3行内容 sed -n '3,/root/p' /etc/passwd #打印第1行到最先匹配包含root字符串的行 sed -n '/root/,/oracle/p' /etc/passwd # 打印匹配root字符串到oracle字符串的行 sed -n '1,$p' /etc/passwd #打印全文内容
修改文件内容
插入
sed '3i new line' /etc/passwd #在第3行前插入内容为new line的行 sed '3a new line' /etc/passwd #在第3行后插入内容为new line的行 sed '3c new line' /etc/passwd #将第3行替换为内容为new line的行 sed '1,3c new line' /etc/passwd #将第1-3行替换为内容为new line的行
删除
sed '1d' /etc/passwd #删除第1行 sed '1,3d' #删除第1-3行 sed '$d' #删除最后1行 sed '/root/d' /etc/passwd #删除包含root的行 sed '3,/root/p' /etc/passwd #删除第1行到最先匹配包含root字符串的行 sed '/root/,/oracle/d' /etc/passwd #删除匹配root字符串到oracle字符串的行
替换
sed 's/root/ROOT/g' /etc/passwd #全文小写root替换为大写root sed '1,5s/root/ROOT/g' /etc/passwd #将第1-5行小写root为替换大写root sed '/root/,/oracle/ s/root/ROOT/g' #将包含root字符串到oracle字符串行间的小写root替换为大写ROOT sed 's/\$//g' /etc/passwd #将$字符删除 sed -n 's/root/hello &/p' /etc/passwd #替换root为hello root。&表示匹配前面模式匹配到的结果
打印行号
sed -n '/root/=' /etc/passwd #打印包含root字符串的行号