比较一个文件的两列是否在linux中是相同的

时间:2014-11-21 17:05:40

标签: linux

我想比较文件中的两列(中间)是否彼此相同。我不知道该怎么做...因为我工作的原始文件非常庞大(在Gb中)

文件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

由于 中号

4 个答案:

答案 0 :(得分:4)

如果您只是需要找到不同的行,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;

答案 1 :(得分:1)

这样的事情:

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

答案 2 :(得分:0)

完成Shiplu Mokaddim的问题,如果您有另一个分隔符(例如在csv文件中),则可以使用:

awk -F; '$1!=$4{print $1,$4}' data.csv | sed -r 's/ /;/g'

在此示例中,定界符为“;”。最后的sed命令是将分隔符再次替换为原始分隔符。确保答案中没有空格,即日期时间。

答案 3 :(得分:-1)

问题:比较同一文件中的两列值。

答案:

TaskPoolScheduler