2014-11-21 390 views
0

我想比较一个文件中的两列(中)是否彼此相同。我不知道怎么办呢......由于我工作一个原始文件(以GB)比较一个文件的两列在linux中是否具有同一性

文件1,而巨大的(列1和列4 - 查看是否它们是相同的)

mid A1 A2 mid A3 A4 A5 A6 
18 we gf 18 32 23 45 89 
19 ew fg 19 33 24 46 90 
21 ew fg 21 35 26 48 92 

感谢 中号

+0

你尝试过什么?我认为你可以剪出你想要的列,并相当容易地区分它们。是否因为文件太大?这对于您使用大量磁盘空间是个问题吗? – MJB 2014-11-21 17:07:21

+0

你可以在列和预期输出中显示具有不同值的行吗? – choroba 2014-11-21 17:08:31

+0

我是linux新手,不知道从哪里开始 – MrMsarguru 2014-11-21 17:10:44

回答

0

如果你只需要找到不同的行,awk会做,

awk '$1!=$4{print $1,$4}' data 

您可以使用diffawk查看差异。

diff <(awk '{print $1}' data) <(awk '{print $4}' data) 

此命令的状态代码($?)将告诉它们是否相同(零)或不同的(非零)。

您可以使用在基础表达这样也

if diff <(awk '{print $1}' data) <(awk '{print $4}' data) >& /dev/null; 
then 
    echo same; 
else 
echo different; 
fi; 
+0

感谢之人..它工作就像魅力......你能解释一下什么>&/ dev/null;在这个等式中做了...我是新的,并且想要学习 – MrMsarguru 2014-11-21 17:21:46

+0

'&&dev/null'将任何输出重定向到'/ dev/null' – 2014-11-21 17:26:16

0

事情是这样的:

awk '{ if ($1 == $4) { print "same"; } else { print "different"; } }' < foo.txt 
+0

感谢您的输入... – MrMsarguru 2014-11-21 17:20:56

-1

问:在同一个文件进行比较的两列值。

答:

cut -d, -f1 a.txt > b.txt ; cut -d, -f3 a.txt > c.txt ; cmp b.txt c.txt && echo "Column values are same"; rm -rf b.txt c.txt  
相关问题