sed 和 awk 是Unix环境下强大的文本过滤工具。
通过sed和awk,可以方便的编辑本地的文件,也可以更方便的使用正则表达式过滤其他的命令的输出。
sed 代表 Stream Editor,意味着 sed 是面向流机制的。为sed命令提供的所有输入在被sed处理后都要送到 STDOUT。
sed 命令并不改变输入的文字。
常用的sed格式:
一、单个 sed 的执行
sed 读取每一行数据,然后执行一个动作。
语法为:
sed `script` files
需要注意的是script被反向单引号包起来,反向单引号是 ~键同键字符。
script 是一个或者多个如下格式的命令:
/pattern/action
pattern 是正则表达式
action: p 打印正在处理的数据行
d 删除正在处理的数据行
s/pattern1/pattern2/ 用第二种正则式替换第一种表达式,原命令 /pattern/s/pattern1/pattern2/ 这种情况下,省略为 s/pattern1/pattern2/
二、多个 sed 命令的执行
执行多个 sed 命令,用如下命令:
sed -e `command1' -e `command2` -e `command3` files
常用的例子是用sed 确定用户的用户ID:
id | sed -e s/uid=//g -e s/\(.*//g
id 输出 :
uid=500(david) gid=500(david)
第一个命令:
-e s/uid=//g 表示用空替换 uuid=
-e s/\(.*//g 表示从第一个括号开始 ( 到后面的全部字符都用空替换
这样,得到的是 uid 的值: 500