sed命令解析
sed工具概述
Stream EDitor,流式编译器
- 非交互,基于模式匹配过滤及修改文本
- 逐行处理,并将结果输出到屏幕
- 可实现对文本的输出、删除、替换、复制、剪切、导入、导出等各种操作
命令格式解释
主要用法
- 格式1: 前置命令 | sed [选项] '编辑指令'
- 格式2: sed [选项] '编辑指令' 文件
[root~]# sed -n ’^id‘ /etc/inittab
常见命令选项
- -n: 屏蔽默认输出(全部文本)
- -i: 直接修改文件内容
- -r:启动扩展的正则表达式
条件
- 行号可以使用数字表示单行
- 3,5表示连续的多行
- 省略条件,则默认逐行处理全部文本
- 匹配正则时,需要使用//
基本的处理动作
- 常见动作指令
常见处理操作
输出文本
sed -n 'p' a.txt #输出所有行,等同于cat a.txt
sed -n '4p' a.txt #输出第四行
sed -n '4,7p' a.txt #输出第4~7行
sed -n '/^bin/p' a.txt #输出以bin开头的行
sed -n '$=' a.txt #输出文件的行数
删除文本
sed '3,5d' a.txt # 删除第3~5行
sed '/xml/d' a.txt # 删除所有包含xml的行
sed '/xml/!d' a.txt # 删除不包含xml的行,!符号表示取反
# 此例中只做输出,不更改原文件(若需要更改,应添加选项-i)
替换文本
sed 's/xml/XML/' a.txt # 将每行中第一个xml替换为XML
sed 's/xml/XML/3' a.txt # 将每行中的第3个替换为XML
sed 's/xml/XML/g' a.txt # 将所有xml都替换XML