11 March 2014

1、写脚本实现,可以用shell、perl等。在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中。

#!/bin/bash
cd /tmp
for file in `ls abc* | head -100`; do
    head -1 $file >> new
done

分析

ls abc* | head -100 找到100个以abc开头的文件,然后把每个文件的第一行都存到new文件里


2、写脚本实现,可以用shell、perl等。把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数。

#!/bin/bash
diff A B > tmpfile
grep -A2 '^[0-9]\{1,\}a[0-9]\{1,\}' tmpfile | grep '^> ' | cut -d " " -f 2 > C
rm -rf tmpfile
wc -l C

分析

先diff一下并且把结果放到tmpfile里面。
diff的结果,如果是A文件里没有但是B文件里有的,那么将会是类似于如下的结果: 5a6 > xxxxxxxxxxxx

我们需要的内容是”>”后面的内容,所以需要吧tmpfile做一下处理:

grep -A2 '^[0-9]{1,}a[0-9]{1,}' tmpfile可以找到有类似5a6起的相邻两行,然后再把每一组的第二行找出来,然后再把”> “之后的实体内容找出来,这些内容就是真正的A里面没有但是B里有的内容了。然后得到的内容放到C里。

C文件的行数就很简单了,wc -l C,搞定。