shell文本去重
- 1.单个文件去重
- 2.两个文件的交集,并集
- 求两个文件的并集
- 求两个文件的交集
- 求两个文件的差集
- 3.两个文件合并
- 上下合并
- 左右合并
- 4.多个文件合并去重
1.单个文件去重
参考:
# 将重复的多行变为一行
sort file |uniq
## uniq -u 只显示不重复的行
sort file |uniq -u
2.两个文件的交集,并集
求两个文件的并集
# 求两个文件的并集,如果有重复的行只保留一行
## sort 排序
## uniq 去重,重复的行只保留一行
cat file1 file2 | sort | uniq > result
求两个文件的交集
# 求两个文件的交集,即两个文件中都有的行
## uniq -d 只显示重复的行
cat file1 file2 | sort | uniq -d > result
求两个文件的差集
# 求两个文件的差集,即只有一个文件中有的行
## uniq -u 只显示不重复的行
cat file1 file2 | sort | uniq -u > result
3.两个文件合并
上下合并
# 以追加行的方式合并,如果file1有n行,file2有m行,result为n+m行
cat file1 file2 > result
左右合并
合并后一个文件的内容在左边
,一个文件命令在右边
。
# 左右合并
paste file1 file2 > result
4.多个文件合并去重
# 例如有4个文件
nt.deny hk.deny jp1.deny jp2.deny
# 将4文件排序,去重,然后合并为一个新文件
sort nt.deny hk.deny jp1.deny jp2.deny |uniq > hosts.deny
# 将相同后缀的文件排序,去重,然后合并为一个新文件
sort *.deny |uniq > hosts.deny