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.www58058.com/36802