shell合并文件去重

有三种方法:

1. paste

paste -d”\n” file1 file2 | sort | uniq > file3

2. cat

cat file1 file2 | sort | uniq > file3

3. awk

awk ‘!a[$0]++’ file1 file2 file3

解释:

1、当条件 !a[$0]++ 为真时,awk 的默认动作是 print $0 ,即打印出当前行;
2、当一行首次出现时,a[$0] 为假,!a[$0]++ 为真。
以后,当相同的行再次出现时,a[$0] 为真,!a[$0]++ 为假,所以不再打印该重复的行。
所以就实现了去除重复行的功能。

类似上面的运用还有很多,比如提取一个文件的奇数行,可用如下方法:
awk ‘NR%2’ a.txt
sed实现提取奇数行:
sed -n ‘p;n’

注意:当对大文件合并时,前两种方法并不可靠,可能大文件无法载入内存,awk方法是最简单的,最高效的。(awk每次只载入一行)

你可能感兴趣的:(shell合并文件去重)