使用grep筛选多个条件
1.grep 同时满足多个关键字和满足任意关键字
1
2
|
#①
grep -E "word1|word2|word3" file.txt
|
2.满足任意条件(word1、word2和word3之一)将匹配。
1
2
|
# ②
grep word1 file.txt | grep word2 |grep word3
|
必须同时满足三个条件(word1、word2和word3)才匹配。
3.统计符合条件的个数
*.log ——-当前目录下所有以.log结尾的日志
1
|
grep word1 *.log | grep word2 | wc -l
|
4.分页查看符合条件的内容
1
|
grep word1 *.log | grep word2 | more
|
不说废话, 例如需要排除 abc.txt 中的 mmm nnn
1
|
grep -v 'mmm\|nnn' abc.txt
|
但是这样还是很多,需要从这几条信息里面去找到所需要的 ip 地址,我们可能想到了使用 grep -v 屏蔽掉 inet6,结果如下:
1
2
3
|
bash-3.2# ifconfig | grep inet | grep -v inet6
inet 127.0.0.1 netmask 0xff000000
inet 10.60.104.38 netmask 0xfffffe00 broadcast 10.60.105.255
|
md5sum
1、简介
MD5算法一般用于检查文件完整性,尤其常用于检测在(网络)文件传输、拷贝、磁盘错误或其他无恶意涉入的情况下文件的正确性。MD5全称报文摘要算法(Message-DigestAlgorithm 5)[RFC 1321],该算法对任意长度的信息进行逐位计算,产生一个二进制长度128位(十六进制长度32位)的校验和(或称“指纹”,“报文摘要”),不同的文件内容生成相同的报文摘要的概率是极其小的。
在Linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。一般来说,安装了Linux后,就会有md5sum工具,可以在命令行终端直接执行。
2、命令格式
1
|
md5sum [OPTION]... [FILE]...
|
命令选项
-
-b或 –binary:以二进制模式读入文件;
-
-t或 –text:以文本文件模式读入文件(默认);
-
-c或 –check:用来从文件中读取md5信息检查文件的一致性;
-
–status:该选项与check一起使用,在check时不输出,根据返回值表示检查结果;
-
-w或 –warn:在check时,检查输入的md5信息有没有非法行,若有则输出相应信息。
3、实例演示
1)生成一个文件的md5值,如下所示:
1
2
3
4
5
6
7
8
|
[root@HLZ test]# ll
total 16
-rw-r--r--1 root root 240 Sep 4 22:26 aaa_pkg.tgz
-rw-r--r--1 root root 11 Sep 4 22:01 aaa.txt
-rw-r--r--1 root root 46 Sep 4 22:24 bbb.log
drwxr-xr-x2 root root 4096 Sep 4 22:24 checksum
[root@HLZ test]#
[root@HLZ test]# md5sum aaa.txt > checksum/aaa.md5
|
这样,就生成了文件aaa.txt的md5校验文件aaa.md5,打开可以看到如下内容:
1
2
|
[root@HLZ test]# cat checksum/aaa.md5
d700cf9bb133858df4d3e0486848be78 aaa.txt
|
2)md5sum支持多个文件输入或通配符
1
2
3
4
5
6
7
8
9
|
[root@HLZ test]# md5sum aaa.txt bbb.log aaa_pkg.tgz > checksum/all.md5
[root@HLZ test]# cat checksum/all.md5
d700cf9bb133858df4d3e0486848be78 aaa.txt
fff62b77988e5b9d83a2872bb2247b21 bbb.log
36eb58b2563f91baf61531aef126eea6 aaa_pkg.tgz
[root@HLZ test]# md5sum aaa* > checksum/aaa_all.md5
[root@HLZ test]# cat checksum/aaa_all.md5
36eb58b2563f91baf61531aef126eea6 aaa_pkg.tgz
d700cf9bb133858df4d3e0486848be78 aaa.txt
|
3)文件内容校验
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@HLZ test]# md5sum -c ./checksum/aaa.md5
aaa.txt:OK
[root@HLZ test]# md5sum -c ./checksum/all.md5
aaa.txt:OK
bbb.log:OK
aaa_pkg.tgz:OK
[root@HLZ test]# vi bbb.log ---修改bbb.log文件内容,添加7个0
abceefghijklmnopqr0000000stuvwxyz1234567890987654321
[root@HLZ test]# md5sum -c ./checksum/all.md5
aaa.txt:OK
bbb.log: FAILED
aaa_pkg.tgz:OK
md5sum: WARNING: 1 of 3 computed checksums did NOT match
[root@HLZ test]#
|
4)文件路径的考虑($PWD即当前路径/home/hanlzh/test/)
1
2
3
4
5
6
7
8
9
10
|
[root@HLZ test]# pwd
/home/hanlzh/test
[root@HLZ test]# md5sum $PWD/aaa.txt > ./checksum/aaa.md5
[root@HLZ test]# cat checksum/aaa.md5
d700cf9bb133858df4d3e0486848be78 /home/hanlzh/test/aaa.txt
[root@HLZ test]# md5sum -c ./checksum/aaa.md5
/home/hanlzh/test/aaa.txt:OK
[root@HLZ test]# cd ..
[root@HLZ hanlzh]# md5sum -c ./test/checksum/aaa.md5
/home/hanlzh/test/aaa.txt:OK
|
4)文件缺失或不存在情况
1
2
3
4
5
6
|
[root@HLZ test]# rm -rf aaa_pkg.tgz
[root@HLZ test]# md5sum -c ./checksum/aaa_all.md5
md5sum: aaa_pkg.tgz: No such file or directory
aaa_pkg.tgz: FAILED open or read
aaa.txt:OK
md5sum: WARNING: 1 of 2 listed files could not be read
|
4、总结
特殊说明
md5校验,可能极小概率出现不同的文件生成相同的校验和,比md5更安全的校验算法还有SHA*系列,如sha1sum/sha224sum/sha256sum/sha384sum/sha512sum等等,基本用法与md5sum命令类似,详情可通过man sha1sum查询。
以下仅简单列举一例,不再赘述。
1
2
3
4
5
6
|
[root@HLZ test]# sha512sum aaa.txt > aaa.sha512
[root@HLZ test]# cat aaa.sha512
8edb9790359ef641112fa85eea5c8f09b7330564a58cddf39aef66006f32454a8879b1e63d9f667ecf86264d4d5b6a602a4c94c79d962ec755345a3837217f89 aaa.txt
[root@HLZ test]#
[root@HLZ test]# sha512sum -c ./aaa.sha512
aaa.txt:OK
|