我有多行和多列的矩阵。我想删除第一列和第二列中具有相同字符串的那些行。例如file-
wheat_tae-miR1127 wheat_tae-miR1127 100.00 19 0
wheat_tae-miR1131 wheat_tae-miR1131 100.00 22 0
wheat_tae-miR164 Rice_osa-miR164 100.00 21 0
wheat_tae-miR164 Maize_miRBase_zma-miR164a-5p 100.00 21 0
wheat_tae-miR444a Maize_zma-miR444a 100.00 21 0
wheat_tae-miR444a Rice_osa-miR444a-3p_1 100.00 21 0
wheat_tae-miR444a wheat_tae-miR444a 100.00 21 0
期望的输出是 -
wheat_tae-miR164 Maize_miRBase_zma-miR164a-5p 100.00 21 0
wheat_tae-miR444a Maize_zma-miR444a 100.00 21 0
wheat_tae-miR444a Rice_osa-miR444a-3p_1 100.00 21 0
答案 0 :(得分:3)
Awk解决方案:
awk '$1!=$2' file
答案 1 :(得分:2)
事实证明,您可以使用awk
awk -F' ' '$1!=$2' input_file
答案 2 :(得分:2)
从命令行使用perl,
perl -ane 'print if $F[0] ne $F[1]' file
答案 3 :(得分:1)
在perl中,这是一个哈希工具。 (由于问号而提供perlish替代品)。
use strict;
use warnings;
my %seen;
while (<DATA>) {
my ( $col1, $col2 ) = split;
print unless ( $col1 eq $col2 );
}
__DATA__
wheat_tae-miR1127 wheat_tae-miR1127 100.00 19 0
wheat_tae-miR1131 wheat_tae-miR1131 100.00 22 0
wheat_tae-miR164 Rice_osa-miR164 100.00 21 0
wheat_tae-miR164 Maize_miRBase_zma-miR164a-5p 100.00 21 0
wheat_tae-miR444a Maize_zma-miR444a 100.00 21 0
wheat_tae-miR444a Rice_osa-miR444a-3p_1 100.00 21 0
wheat_tae-miR444a wheat_tae-miR444a 100.00 21 0
似乎可以做到这一点,但与你的相比,我确实得到了额外的一条线?
wheat_tae-miR164 Rice_osa-miR164 100.00 21 0
wheat_tae-miR164 Maize_miRBase_zma-miR164a-5p 100.00 21 0
wheat_tae-miR444a Maize_zma-miR444a 100.00 21 0
wheat_tae-miR444a Rice_osa-miR444a-3p_1 100.00 21 0