Linux shell 计算两个文件的并集、交集、差集

假设我们现在有两个文件 a.txt 、b.txt

a.txt 中的内容如下:

a
c
1
3
d
4

b.txt 中的内容如下:

a
b
e
2
1
5

# Example 01

计算并集:

[[email protected]_81_181_centos ~]# sort -u a.txt b.txt
1
2
3
4
5
a
b
c
d
e
[[email protected]_81_181_centos ~]#

# Exmaple 02

计算交集:

[[email protected]_81_181_centos ~]# grep -F -f a.txt b.txt | sort | uniq
1
a
[[email protected]_81_181_centos ~]#

# Example 03

计算差集(a - b):

[[email protected]_81_181_centos ~]# grep -F -v -f b.txt a.txt | sort | uniq
3
4
c
d
[[email protected]_81_181_centos ~]#

# Example 04

计算差集(b - a):

[[email protected]_81_181_centos ~]# grep -F -v -f a.txt b.txt | sort | uniq
2
5
b
e
[[email protected]_81_181_centos ~]#

原文地址:https://www.cnblogs.com/leeyongbard/p/9667980.html

时间: 2024-10-25 02:42:49

Linux shell 计算两个文件的并集、交集、差集的相关文章

用Linux shell 计算两个时间差

1.在日志中有两条记录id 开 始 时 间 结 束 时 间0dedffee485e7ddbbff1236cfc0d91 2018-06-28 16:55:37 2018-06-28 16:55:52 122dw049dc21b0a7dcdfegeat8c8 2018-06-28 17:21:01 2018-06-28 17:21:23 如何用linux shell 命令计算出:(结束时间 - 开始时间)的秒数? 拿到开始和结束时间字串的基础上的.start=date +%s -d "2018-0

利用sort和uniq求两个文件的并集,交集和差集

利用sort和uniq求两个文件的并集,交集和差集 并集:cat file1.txt file2.txt | sort | uniq > file.txt 交集:cat file1.txt file2.txt | sort | uniq -d >file.txt 差集:求file1.txt相对于file2.txt的差集,可先求出两者的交集file3.txt,然后在file1.txt中除去file3.txt即可. cat file1.txt file2.txt | sort | uniq -d

计算两个文件相对路径

/**计算两个文件相对路径 */function relative_path($path1,$path2) {    $arr1 = explode('/',dirname($path1));    $arr2 = explode('/',dirname($path2));    for($i=0,$len = count($arr2);$i < $len;$i++) {        if($arr1[$i] != $arr2[$i]) {            break;        }

Shell合并两个文件成一个文件的两列

Shell合并两个文件成一个文件的两列 发布时间:2014-07-20   编辑:www.jquerycn.cn Shell合并两个文件成一个文件的两列,提供了两种方法,普通shell脚本,awk脚本. 文件内容如下:more eng.txt chi.txt ::::::::::::::eng.txt::::::::::::::semicoloncommadelimiterspacebarhyphensingle quotedouble quote ::::::::::::::chi.txt::

PHP计算两个时间段是否有交集(边界重叠不算)

<?php /** * PHP计算两个时间段是否有交集(边界重叠不算) * * @param string $beginTime1 开始时间1 * @param string $endTime1 结束时间1 * @param string $beginTime2 开始时间2 * @param string $endTime2 结束时间2 * @return bool * @author blog.snsgou.com */ function is_time_cross($beginTime1 =

计算两个时间段是否有交集

1 /** 2 * PHP计算两个时间段是否有交集(边界重叠不算) 3 * @param string $beginTime1 开始时间1 4 * @param string $endTime1 结束时间1 5 * @param string $beginTime2 开始时间2 6 * @param string $endTime2 结束时间2 7 * @return bool 8 */ 9 function is_time_cross($beginTime1 = '', $endTime1 =

Linux Shell 04 数字/字符串/文件测试

一. 数字测试 格式:n1  -op  n2 测试操作op: eq/ne/le/ge/lt/gt    -->    等于/不等于/小于等于/大于等于/小于/大于 1. 数字比较可以使用特殊的(())操作符,用法更接近于C语言,见数字测试. 二. 字符串测试 s1 = s2 #s1与s2是否相同 s1 != s2  #s1与s2是否不相同 s1 < s2 #s1是否小于s2 s1 > s2 #s1是否大于s2 -n s1 #s1长度是否大于0 -z s1  #s1长度是否为0 1. 字符

linux命令 比较两个文件

1.cmp命令 通过比较字节比较文件 例: 设置两个不同的文件,通过cmp命令来执行 在屏幕上会显示第几行不同 2.diff 一行一行的比较两个文件 如: 会溴铵是具体哪些行不同 3.vimdiff 会在屏幕上显示两个窗口来显示不同之处 总结: 一般推荐使用diff命令,可显示在哪行两文件不同,如果需要具体知道不同之处,可使用vimdiff,具体查看不同 原文地址:https://www.cnblogs.com/alighie/p/8671978.html

每日一题--4--在两个文件中取交集,显示指定的内容

把这个两个文件都存在的用户的密码输出出来 [[email protected] student]# head file1 file2 ==> file1 <== oldboy 1234 alex 4567 lidao 9999 ==> file2 <== 001 lidao 002 alex 003 oldboy 004 oldgirl 提示:需要用到如何判断这两个文件不是一个文件. 解题思路 awk 'FNR==NR{h[$1]=$2}FNR!=NR{print h[$2]}'