【发布时间】:2018-08-16 14:44:28
【问题描述】:
我想比较同一个文件中的多列,看看我在哪一行有差异,在本例中是前 4 列。该文件如下所示:
Column1 Column2 Column3 Column4 Column5
AA AA AA AA AA
GG GG GG GG GG
CC GC CC CC CC
CC TT CC GC TT
如果我做了这样的事情:
awk -F"\t" '{if ($1==$2) print $1, $2; else print NR}' file.txt
我得到下一个输出:
1
AA AA
GG GG
4
5
但是,我如何使用简单的语法同时比较前 4 列?我尝试过这样的事情:
awk -F"\t" '{if ([$2,$3,$4]==$1) print $1, $2, $3, $4 ; else print NR}' File.txt
但它不起作用。
我的预期输出应该是:
1
AA AA AA AA
GG GG GG GG
4
5
我的文件有超过四列,所以我想比较列组,在这种情况下是从第 1 列到第 4 列,如果它们具有相同的字符,则只打印这四列,如果它们具有相同的字符,则打印行数有区别。
我怎样才能做到这一点?
【问题讨论】:
-
请在您的帖子中提及预期的输出。
-
完成,感谢您的建议。
-
不清楚 - 您是要打印在每一列中具有相同值的行,还是要打印在所有列中与其他行或其他内容具有相同值的行?输出中的这些数字是什么?
-
我正在尝试打印 4 列,如果它们具有相同的字符,如果它们没有相同的字符,我想打印行号。
-
@EricGonzález 是输入文件每行部分开头的空格,还是只是在发布数据时遇到的格式化问题?