1、写脚本实现,可以用shell、perl等。在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中。
方法1:
#!/bin/sh for files in `find /tmp -type f -name "abc*"|head -n 100` do sed -n '1p' $files>>new done
方法2:
find /tmp -type f -name “abc*” | head -n 100 | xargs head -q -n 1 >> new
2、写脚本实现,可以用shell、perl等。把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数。
方法1:
grep -vxFf a b >c | wc -l 说明: v-- invert match x-- 匹配panttern为整行 Ff-- 读取文件中的每一行作为一个pattern
方法2:
注意事项:如果两个文件排序不一样的话,会出问题,所以下面采用了sort sort a > a2 sort b > b2 comm -23 b2 a2 | wc -l
方法3:
diff -u b a | grep "^-[[:alnum:]]" | sed 's/-//' >>c ls -l c | wc -l 说明: -u:使用统一的输出格式 执行结果演示(一步步剖析): # diff -u b a --- b2016-08-17 13:35:03.248720247 +0800 +++ a2016-05-24 13:58:30.459664498 +0800 @@ -1,3 +1,4 @@ +root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin @@ -57,4 +58,4 @@ zhang3:x:1131:1131::/home/zhang3:/bin/bash postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash jumpserver:x:1132:1132::/home/jumpserver:/bin/bash -zhang3f:x:1133:1133::/home/zhang3f:/bin/bash +ops:x:1133:1133::/home/ops:/bin/bash # diff -u b a | grep "^-[[:alnum:]]" | sed 's/-//g' -zhang3f:x:1133:1133::/home/zhang3f:/bin/bash
脚本学习,切忌凭空想象,在掌握基础知识的同时,需要多验证,多与其他人交流。
原创文章,作者:Net21-冰冻vs西瓜,如若转载,请注明出处:http://www.178linux.com/36802