繁体   English   中英

比较Linux中文件的两列是否相同

[英]compare if two columns of a file is identiical in 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

谢谢米

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

像这样的东西:

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

完成一点Shiplu Mokaddim 的回答,如果您有另一个分隔符,例如在 csv 文件中,您可以使用:

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

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

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

回答:

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    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM