一,,shell脚本中常用命令:
1,diff命令:
diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。
使用规则:
diff [options] target1 target2
diff file1 file2
diff direcory1 directory2
#输出结果含义:
[num1,num2][a|c|d][num3,num4]
num1,num2表示在第一个文件中的行数
a表示添加----add
c表示更改----change
d表示删除----delete
<表示第一个文件中的内容,>表示第二个文件中的内容,---分割线
num3,num4表示在第二个文件中的行数
2,4c2,4表示改变第一个文件中的第二行和第四行才能匹配第二个文件中的第二行和第四行
#参数:
-b或--ignore-space-change 不检查空格字符的不同
-B或--ignore-blank-lines 不检查空白行
-c 显示全部内文,并标出不同之处
-i或--ignore-case 不检查大小写的不同
-p:若比较的文件为C语言的程序码文件时,显示差异所在的函数名称;
-q或--brief:仅显示有无差异,不显示详细的信息
-r或--recursive:比较子目录中的文件
-u 以合并的方式来显示文件内容的不同
2,cut命令:cut命令多用与字符截取
cut -d 指定分隔符
cut -f 1,7|1-7 指定截取的列
cut -c 1,4|1-4 指定截取的字符位置
3,uniq:重复字符做相应的处理
uniq -u 显示唯一的行
uniq -d 显示重复的行
uniq -c 每行显示一次并统计重复次数
4,sort:多用于字符排序
sort -n 纯数字排序
sort -r 倒序
sort -u 去掉重复数字
sort -o 输出到指定文件中
sort -t 指定分隔符
sort -k 指定要排序的列
5,test命令:
test命令和[]等同
test “
A"=="
A
"=="
B” 等同 [ “
A"=="
A
"=="
B” ]
[ "$A" == "$B" ] #等于
[ "$A" != "$B" ] #不等于
[ "$A" -eq "$B" ] #等于
[ "$A" -ne "$B" ] #不等于
[ "$A" -le "$B" ] #小于等于
[ "$A" -lt "$B" ] #小于
[ "$A" -ge "$B" ] #大于等于
[ "$A" -gt "$B" ] #大于
[ "$A" -ne "$B" -a "$A" -gt "$B" ] #整数1不等于整数2话并且整数1大于整数2
[ "$A" -ne "$B" -o "$A" -gt "$B" ] #整数1不等于整数2话或者整数1大于整数2
[ -z "$A" ] #字符串的长度是否为零
[ -n "$A" ] # 字符串的长度非零
[ "file1" -ef "file2" ] #两个文件是否为同一个文件,可用于硬连接。主要判断两个文件是否指向同一个inode。
[ "file1" -nt "file2" ] #判断文件1是否比文件2新
[ "file1" -ot "file2" ] #判断文件1比是否文件2旧
[ -e "file" ] #如果文件存在,则为真;
[ -f "file" ] #如果文件为一个普通文件,则为真;
[ -S "file" ] #如果文件为一个套接字特殊文件,则为真;
[ -b "file" ] #如果文件为一个块特殊文件,则为真;
[ -d "file" ] #如果文件为一个目录,则为真;
[ -c "file" ] #如果文件为一个字符特殊文件,则为真;
6,shell中的文本处理:
1)grep 命令是一种强大的文本搜索工具,根据用户指定的“模式”对目标文本进行匹配检查,打印匹配到的行
grep 匹配条件 处理文件
例如
grep root passwd #过滤含有root的行
grep ^root passwd #过滤以root开头的行
grep root$ passwd #过滤以root结尾的行
grep -i root passwd #过滤含有root的行
grep -E "root|ROOT" passwd #不区分大小写过含有root的行
#准确匹配关键字:
\<关键字
关键字\>
\<关键字\>
2)sed 行编辑器
stream editor(流编辑器)
用来操作纯 ASCII 码的文本
处理时,把当 前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space)可以指定仅仅处理哪些行
sed 符合模式条件的处理 不符合条件的不予处理
处理完成之后把缓冲区的内容送往屏幕
接着处理下一行,这样不断重复,直到文件末尾
sed 对字符的处理
p 显示
d 删除
a 添加
c 替换
w 写入
i 插入
p模式操作
sed -n ‘/:/p’ fstab
sed -n ‘/UUID$/p’ fstab
sed -n ‘/^UUID/p’ fstab
sed -n ‘2,6p’ fstab
sed -n ‘2,6!p’ fstab
d模式操作
sed ‘/^UUID/d’ /etc/fstab
sed ‘/^#/d’ /etc/fstab
sed ‘/^$/d’/etc/fstab #显示以空格开头,空格结尾
sed ‘1,4d’/etc/fstab
sed –n ‘/^UUID/!d’ /etc/fstab