都是一种过滤工具
sed是是一种流式编译器
是一种非交互式的 基于文本文件的过滤工具
可以诸行处理的
可以对文件进行复制 ,替换,删除 导入 ,导出 输出 剪切
sed的p d s 的操作
p是打印
sed文本处理工具的用法:
sed
-
n
'1p'
/etc/
hosts 打印第一行
sed -n "3p,6p" /etc/passwd 打印第三行和第六行
sed -n '3,6p' /etc/passwd 打印三到六行
sed -n 'p' /etc/passwd 打印全部
sed -n '/root/p' /etc/passwd 打印含有root的行
d是删除————————跟打印有点类似
sed -n '/xm/d' a.txt 删除含有xm的行
sed -n '/xm/d!' a.txt 删除不含xm的行
sed
'd'
/etc/
passwd
//删除所有行
sed '$d' a.txt //删除文件的最后一行
'/^$/d'
a
.
txt
//删除所有空行
s是替换
- [root@svr5 ~]# sed 's/xml/XML/' a.txt //将每行中第一个xml替换为XML
- [root@svr5 ~]# sed 's/xml/XML/3' a.txt //将每行中的第3个xml替换为XML
- [root@svr5 ~]# sed 's/xml/XML/g' a.txt //将所有的xml都替换为XML
- [root@svr5 ~]# sed 's/xml//g' a.txt //将所有的xml都删除(替换为空串)
- [root@svr5 ~]# sed 's#/bin/bash#/sbin/sh#' a.txt //将/bin/bash替换为/sbin/sh
- [root@svr5 ~]# sed '4,7s/^/#/' a.txt //将第4~7行注释掉(行首加#号)
- [root@svr5 ~]# sed 's/^#an/an/' a.txt //解除以#an开头的行的注释(去除行首的#号)
- 用法1:前置命令 | sed [选项] '条件指令'
- 用法2:sed [选项] '条件指令' 文件.. ..
sed命令的常用选项如下:
-n(屏蔽默认输出,默认sed会输出读取文档的全部内容)
-r(让sed支持扩展正则)
-i(sed直接修改源文件,默认sed只是通过内存临时修改文件,源文件无影响)
awk是一个编程语言,和数据处理引擎
awk的使用方法跟sed基本一致
awk是查询列 sed是查询行
awk
'{print $1,$3}'
test
.
txt
//打印文档第1列和第3列
df
-
h
|
awk
'{print $4}'
//打印磁盘的剩余空间
也可以结合管道使用
awk
-
F
:
'{print $1,$7}'
/etc/
passwd -F 是指定分格符 可以省去空格和tab健
awk可以使用内置变量
NR NF
BEGIN END
awk的条件的处理
字符串/数值对比
逻辑对比
运算赋