一、grep
1、grep与egrep的关系
grep -E = egrep
grep支持基本正则表达式
egrep对于基础和扩展的正则表达式都支持
2、实验内容
(1)、实验素材准备
(2)、实验步骤
grep (参数) xxx 文件名
grep参数 | 意义 |
---|---|
关键字 | 查询带有关键字的行 |
-E xx/xxx | 筛选含有这两种关键字之一的内容 |
-e xx -e xxx | 与上一条等价 |
-i | 大小写不敏感 |
-n | 显示筛选行的行号 |
-B5 | 显示筛选行及其之后的5行 |
-A5 | 显示筛选行及之前的5行 |
-v | 排除某个关键字,即取反 |
过滤文件中有root关键字的部分
过滤文件中含有root/bash关键字的行
-E “root|nologin” == -e root -e nologin
-i 表示忽略大小写,是大小写不敏感型
-n 关键字 表示过滤文件中含有关键字的行及其行号
-5 关键字 表示过滤文件中含有关键字行及其上5行和下5行
含有关键字行的后5行
不含关键字的行
二、sed
命令格式: sed 参数 命令 处理对象 或是 sed 参数 处理对象 -f 处理规则文件
对字符的处理
p 显示(present)
sed -n 5p filename##显示第五行
sed -n 3,5p filename##显示3到5行
sed -ne "3p;5p filename##显示3和5行
sed -ne 1,5p filename##显示1-5行
sed -ne '5,$p' filename##显示5到最后以行
sed -n '/^#/p' fstab ##显示以#开头的行
显示第五行
显示1和5行
显示1到5行
第5行到最后一行
显示以test开头的行
d 删除(delete)
sed 5d filename##删除第五行
sed '/^#/d' filename##把#开头的行删除
sed '/^UUID/!d' fstab##除了UUID以外的行都删除
sed -e '5,$d' filename
删除以test开头的行
删除三行及三行以后的内容
a 添加(add)在指定内容之后
sed -e '$a hello world' filename
sed -e '$a hello\nworld' filename
sed -e '/^#/a hello world' filename
在文件末尾添加hello world内容
在文件末尾添加hello world换行内容
c 替换(change)
sed -e '/^#/c hello world' file #将文件以#开头的内容替换为hello world
sed '5chello world' file #将文件中的第5行替换为hello world
w 把符合的行写到指定文件中(write)
sed '/^UUID/w westofile' westos ##把westos中UUID开头的行写入westosfile中
把passwd中mail开头的行写入test中
写入后的test文件
i 插入(insert)
sed '5ihello westos' filename
在文件的第一行之前插入hello westos内容
r 整合文件(re)
sed '5r haha' westos ##
将文件haha的内容追加到passwd文件的第五行之后
三、awk
1、用法
awk -F 分割符 BEGIN {操作1} {操作2} END {操作3} FILENAME
参数 | 意义 |
---|---|
NR | 行数 |
NF | 列数 |
FILENAME | 文件名称本身 |
XXXXX | 变量名 |
“XXXXX” | 字符串 |
bash$ | 条件 |
---|---|
/条件1/条件2/ | 条件1或者条件2 |
/条件1/ | |
/条件1/&&条件2/ | 条件1并且条件2 |
参数 | 意义 |
---|---|
$0 | 所有的列 |
$1 | 第一列 |
$2 | 第二列 |
2、实验内容
在passwd中,以:为分割符,以root为开始打印每一行的第一列并以end结束整个打印
在passwd中,打印行数
在passwd中,打印列数
打印出数据的来源文件名
以westos为变量名,每次循环加一,直至结束后输出行数
输出以nologin结尾的行的第1,3列
同上,但当要求的列数超过本身的列数时,会只显示存在的那一列。
条件中两个元素的或关系
两个条件的或关系
两个条件的并关系
第七列以bash结尾的内容和它的反命题