热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何从命令行中找到Set-Subset的两个文件?-HowtofindtheSet-Subsetoftwofilesfromthecommandline?

Ihavetwofileswithsortedlines.Onefile(B)isasubsetoftheotherfile(A).Iwouldliketo

I have two files with sorted lines. One file (B) is a subset of the other file (A). I would like to find all lines in A that ARE NOT in B. Ideally, I would like to create a file (C) that contains these lines. Is this possible in Unix? I'm looking for a one line command to do this instead of writing a script. I looked at the join and diff commands, but I could not find a command option to do this. Thanks for the help.

我有两个排序行的文件。一个文件(B)是另一个文件(A)的子集。我想在A中找到不在B中的所有行。理想情况下,我想创建一个包含这些行的文件(C)。这在Unix中是否可行?我正在寻找一个单行命令来执行此操作而不是编写脚本。我查看了join和diff命令,但是我找不到执行此操作的命令选项。谢谢您的帮助。

5 个解决方案

#1


13  

This will suppress common lines:

这将抑制常见的行:

comm -3 a b

#2


5  

How about this:

这个怎么样:

grep -v -f B A > C

#3


3  

You can do this with diff as well. Diff (unlike @johlo's grep answer) cares about order, works on non-sorted files (unlike @johnshen64's comm answer) :

您也可以使用差异来完成此操作。 Diff(不像@ johlo的grep答案)关心顺序,适用于非排序文件(不像@ johnshen64的comm回答):

$ cat a
a
b
c
d
e
$ cat b
a
b
f
d
e
$ diff -dbU0 a b
--- a   2012-05-18 16:02:30.603386016 -0400
+++ b   2012-05-18 16:02:45.547817122 -0400
@@ -3 +3 @@
-c
+f

So you can use a pipeline to get just the omitted lines—considering order:

因此,您可以使用管道来获取省略的行 - 考虑顺序:

$ diff -dbU0 a b | tail -n +4 | grep ^- | cut -c2-
c

#4


1  

This join command will do what you're asking:

这个join命令可以满足您的要求:

join -v 1 fileA fileB > fileC

Demonstration:

$ cat fileA
a
c
d
g
h
t
u
v
z
$ cat fileB
a
d
g
t
u
z
$ join -v 1 fileA fileB
c
h
v

This assumes sorted files as you stated in your question. For unsorted files:

这假定您在问题中声明的已排序文件。对于未分类的文件:

join -v 1 <(sort fileA) <(sort fileB)

#5


0  

Awk Solution

Input files

a

aaa
bbb
ccc

b

ccc
ddd
eel

Code

awk ' NR==FNR { A[$0]=1; next; }
{ if ($0 in A) { A[$0]=0; } }
END { for (k in A) { if (A[k]==1) { print k; } } } ' a b > c

c (Output file)

c(输出文件)

bbb
aaa

推荐阅读
  • Linux提权之suid篇
    Linux提权之suid篇不知攻,焉知防一个在安服路上摸索的大三生,记录平时学习笔记suid前言:1.只有可以执行的二进制程序文件才 ... [详细]
  • 获取原始语音系统图使用matlab生成一个测试用的单频信号,1KHz,1Vrmsclcclearall;closeall;f1000;%定义信号频 ... [详细]
  • 一、如果使用默认的1521端口,让实例自动注册到该监听上,那么local_listener无需设置,listener.ora文件按照正常方 ... [详细]
  • 以下数据来源于TRDIR,TRDIRT,有一些对应系统的事务,有具体的T-CODE.以下我会标注一些我个人认为会常用到的.程序功能描述RSORA000O ... [详细]
  • 启动监控MonitorTables主要存储一些监控信息(当前运行的SQL,IO统计信息,当前进程情况)比如monDevic ... [详细]
  • 原文译文PatientswithRheumatoidArthritisOnAnti-TNFTherapy;ResponderswithMajorReductionInPowerDo ... [详细]
  • 关键词:LinuxJDKJRE解决JRE中文乱码解决FireFox不支持appletl 安装JDK1、  安装jdkroot用户进入jdk安装文件所在目录,键入chmoda+xjd ... [详细]
  • Mask-RCNN源码阅读笔记
    阅读了https:blog.csdn.netu011974639articledetails78483779?locationNum9&fps1这篇博客这篇博客介 ... [详细]
  • fromkeras.modelsimportSequentialfromkeras.layersimportDense,Dropoutfromkeras.layersimp ... [详细]
  • 【scrapy】爬取汽车车型数据
    汽车最近想在工作相关的项目上做技术改进,需要全而准的车型数据,寻寻觅觅而不得,所以就只能自己动手丰衣足食,到网上获(窃)得(取)数据了。汽车之家是大家公认的数据做的比较好的汽车网站 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
author-avatar
那尼1_388
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有