1、diff 文件内容比较命令
用法:diff [options] files|directorys
输出信息:
[num1,num2] [a|c|d] [num3,num4]
num1,num2 ##第一个文件中的行
a ##添加
c ##更改
d ##删除
< ##第一个文件中的内容
> ##第二个文件中的内容
num3,num4 ##第二个文件中的行
常用参数
-b 对比时忽略空格
-B 对比时忽略空行
-i 对比时忽略大小写
-c 显示文件所有内容并标示不同
-r 对比目录
-u 对比后合并输出
2、patch文件修补命令
patch 原文件 补丁文件 ##使用补丁文件修改更新原始文件
patch -b 原文件 补丁文件 ##使用补丁文件修改更新原始文件时备份原文件
3、cut数据截取命令
cut -d : ##指定:为分隔符
-f ##指定显示的列:5表示第五列;3,5表示3和5列;3-5表示3到5列;5-表示第五列以后;-5表示到第五列
-c ##指定截取的字符(数字用法同-f)
4、sort排序命令
sort -n ##纯数字排序
-r ##倒序排序
-u ##去掉重复后排序
-o ##将排序结果输出到指定文件
-t ##指定分隔符
-k ##指定排序的列
5、uniq重复数据处理命令
uniq -c #合并重复并统计重复个数
-d #显示重复的行
-u #显示唯一的行
练习:
1、命令练习:过滤ens3网卡上的ip并在输出时只显示该ip
思路:将ifconfig查询显示的信息通过管道,截取前两行后再截取IP所在的最后一行,对其执行cut命令指定以’'空格为分隔符号截取第10列即可得到ip
2、命令练习:查找能登陆系统用户中UID最大的用户,并显示其名称
思路:抓取/etc/passwd文件中以bash结尾的行(即能登陆系统的用户),将显示的信息通过管道指定以“:”为分隔符号对第3列(UID所在列)进行纯数字倒序排序,截取排序结果的第一行,对其执行cut命令指定以“:”为分隔符号截取第1列即可得到能登陆系统用户中UID最大的用户名称
6、tr字符转换命令
tr 'a-z' 'A-Z' ##小写转大写
tr 'A-Z' 'a-z' ##大写转小写
实验:
切换到一个空目录/mnt中,新建编辑文件westos,写入一行小写字符和一行大写字符,cat查看文件内容将显示结果通过管道进行字符转换
注意: 只能转换单个字符,如不能将’hello’转换为’test’;可以将给定范围(大写/小写)的字符转换为一个指定字符
7、&& || 条件判断
&& ##符合条件作动作
|| ##不符合条件作动作
实验:
1、id+用户名 可以查看系统中某用户是否存在,将命令执行结果导入垃圾箱并使用&&判断如果符合无报错信息条件则输出hello is exist,使用||判断如果不符合无报错信息条件则输出hello is not exist
2、编写脚本判断某一用户是否在系统中存在
$1 表示id后面跟着的用户名
8、test比较命令
1、test命令的四则运算
test = [] ##[]就相当于test命令,但[后和]前都必须有空格
"test $a = $b" = [ "$a" = "$b" ]
= ##等于
!= ##不等于
-eq ##等于
-ne ##不等于
-le ##小于等于
-lt ##小于
-ge ##大于等于
-gt ##大于
2、test的条件关系
-a ##并且
-o ##或者
3、test对空的判定
-n ##nozero 判定内容不为空
-z ##zero 判定内容为空
4、test对于文件的判定
-ef ##文件节点号是否一致(硬链)
-nt ##文件1是不是比文件2新
-ot ##文件1是不是比文件2老
-d ##文件类型是否为目录
-S ##文件类型是否为套接字
-L ##文件类型是否为软连接
-e ##文件是否存在
-f ##文件类型是否为普通文件
-b ##文件类型是否为块设备
-c ##文件类型是否为字符设备
练习:
1、要求写一个脚本,可以用来判断输入的数值是否在0-9的区间中
2、编写脚本判断文件类型
2、sed
1、sed简介
sed 全名叫 stream editor即流编辑器,与 vim 的交互式编辑方式截然不同,作为一种非交互式编辑器,sed使用预先设定好的编辑指令对输入的文本进行编辑,完成之后输出编辑结果。其功能十分强大,加上正则表达式的支持,可以进行大量的复杂文本的编辑操作。
2、sed命令格式
p :显示
sed 参数 命令 处理对象
sed -n 5p westos ##显示第5行
sed -n 3,5p westos ##显示第3行到第5行
sed -n "3p;5p" westos ##显示第3行和第5行
sed -n 1,5p westos ##显示1-5行
sed -n '5,$p' westos ##显示第5行到最后一行
sed -n '/^#/p' fstab ##显示以#开头的行
d :删除
sed 5d westos ##删除第5行
sed '/^#/d' fstab ##把以#开头的行删除
sed '/^UUID/!d' fstab ##删除不是以UUID开头的所有行
sed '5,$d' westos ##删除第5行到最后一行
a :添加
sed '$a hello world' fstab ##在最后一行后添加字符串
sed '$a hello\nworld' fstab ##在最后一行后添加字符串,使用换行符隔开
sed '/^#/a hello world' fstab ##在以#开头的行后添加字符串
d)c :替换
sed '/^#/c hello world' fstab ##将所有以#开头的行替换为指定字符串
sed '5chello world' westos ##将第5行替换为指定字符串
w :把符合的行写入到指定文件中
sed '/^UUID/w westofile' westos :把westos中UUID开头的行写入westosfile中
i :插入
sed '5ihello westos' westos:在westos文件的第5行前插入指定字符串
r :整合文件
sed '5r westofile' westos:将westofile文件中的内容整合到westos文件的第5行后