过滤
格式: grep [选项]... 查找条件 目标文件
选项
-m 匹配m次后停止 grep -m 1 root /etc/passwd #多个匹配只取第一个
-v 取反
-i 忽略大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q 静默模式 不输出任何信息 一般用于脚本
-A 打印后指定行
-B 打印前指定行
-C 前后各指定行
-e 实现多个选项间逻辑or关系 grep -e root -e bash /etc/passwd #包含root或者包含bash 的行
-w 匹配整个单词
-E 使用ERE 使用扩展正则
-F 不支持正则表达式 相当于 fgrep
-f file根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件
-r 递归目录,但不处理逻辑
-R 递归目录,但处理软连接
基本语法
sed [option] ... 'script;script;...' [input file...]
选项 自身脚本语法 支持标准输入管道
选项
-n 不输出模式空间内容到屏幕,即不自动打印
-e 多点编辑[root@www. data] #sed -n -e '/^r/p' -e '/^b/p' /etc/passwd
-f FILE 从指定文件中读取编辑脚本
-r, -E 使用扩展正则表达式
-i.bak 备份文件并原处备份 (-i.后面跟什么都行,.123 .xhz ... 都可以)
#说明:
-ir 不支持
-i -r 支持
-ri 支持
-ni 会清空文件
sed脚本格式 '地址+命令'组成
1.不给地址,对全文进行处理(比如行号)
2.单地址
#:指定的行 $:最后一行
3.地址范围
#,# 从#行到第#行 3,6 从第3行到6行
#,+# 从#行到 +#行 3,+4 从第3行到第7行
/pat1/ ,/pat2/ 第一个正则表达式到第二个正则表达式之间的行
#, /pat/ 从#号行为开始找到pat为止
/pat/,# 找到#号个part为止
4. 步进: ~
1~2 奇数行 从1开始每次跳2位
2~2 偶数行 从2开始每次跳2位
命令
p 打印当前模式空间的内容,追加到默认输出之后
Ip 忽略大小写输出
d 删除模式空间
a [\]text 在指定行后面追加文本,支持使用\n实现多行追加
i [\text] 在行前面插入文本
c [\text] 替换行为单行或多行文本
w file 保存模式匹配的行至指定文件
r file 读取指定文件的文本至模式空间中匹配的行后
= 为模式空间中的行打印行号
! 模式空间中匹配行取反处理
q 结束或退出sed
搜索替代
s/旧内容/新内容/修饰符
查找替换,支持使用其他分隔符,如 s@@@ ,s###
替换修饰符:
g 行内全局替换
p 显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中
I,i 忽略大小写
[root@localhost ~]#echo 123abcxyz |sed -r 's/(123)(abc)(xyz)/\1/'
##分组 s//代表查找替换 ()代表分组 \1 代表留下的组
123
格式
awk [options] 'program' var=value file...
program 通常放在单引号中,并可以由三种部分组成
BEGIN语句块 模式匹配的通用语句块 END语句块
awk 选项 '模式{print }'
选项
-F 指定分隔符 ,不写默认指定空格为分隔符,并压缩成一个空格
-v var=value 变量赋值
FS 指定每行文本的字段分隔符,缺省默认为空格或制表符(tab) 。与 ' -F' 作用相同 -v "FS=:"
OFS 输出时的分隔符
NF 当前处理的行的字段个数
NR 当前处理的行的行号(序号)
$0 当前处理的行的整行内容
$n 当前处理行的第n个字段(第n列)
FILENAME:被处理的的文件名
RS 行分隔符。
printf
%s:显示字符串
%d,%i:显示十进制数
%f:显示为浮点数
%e,%E:显示科学计数法数值
%c:显示字符的ASCLL码
%g,%G:以科学计数法或浮点形式显示数值
%u:无符号整数
%%:显示%自身
例 awk -F: '{printf "%s",$1}' /etc/passwd