如何去除重复的内容?

如何去除重复的内容?

aq.txt我有一个包含以下内容的文件:

WP_021815421.1  OG5_132922  deth|YP_182312  3   -07 42.35   81.7
WP_021815427.1  OG5_128110  rbal|NP_868155  1   -55 50.72   53.2
WP_012456834.1  NO_GROUP    bsui|NP_700181  8   -53 48.18   62
WP_084606289.1  OG5_132922  aful|NP_069703  5   -28 57.00   92.6
WP_084606284.1  OG5_153487  bpse|YP_331974.1    6   -78 48.87   91.4

另一个文件ar.txt包含以下内容:

WP_007394757.1  OG5_129150  cbur|NP_820894  7   -12 84.09   100
WP_010195908.1  OG5_130915  yent|YP_001007837.1 6   -16 70.42   100
WP_011281115.1  OG5_128110  rbal|NP_868155  1   -56 51.67   52.3
WP_010196670.1  OG5_126760  yent|YP_001008069.1 7   -46 85.44   100
WP_010196689.1  OG5_128312  sent|NP_458465  8   -36 68.81   100
WP_010196702.1  OG5_126678  sfle|NP_709098  7   -52 81.30   100
WP_011281110.1  OG5_132922  deth|YP_182312  1   -07 38.82   81.7
WP_011281234.1  NO_GROUP    bsui|NP_700181  8   -53 48.18   62
WP_011281111.1  OG5_132922  aful|NP_069703  5   -28 55.88   94.4
WP_010196711.1  OG5_126722  sent|NP_458477  2   -53 73.29   96.4
WP_010196728.1  OG5_126681  bpse|YP_335116.1    1   -42 80.36   86.8

我想只提取匹配的模式(基于OG number),所以我编写了以下脚本:

OG5_132922  aq  WP_021815421.1
OG5_132922  ar  WP_011281110.1
OG5_132922  ar  WP_011281111.1
OG5_128110  aq  WP_021815427.1
OG5_128110  ar  WP_011281115.1
OG5_132922  aq  WP_021815421.1
OG5_132922  ar  WP_011281110.1
OG5_153487  aq  WP_084606284.1

我的意思是如果它找到 OG 号码两次或更多次,那么只应打印第一个匹配的号码。有人可以指导我吗?

答案1

问题:

  • 打印第二个字段,即不带扩展名的文件名,然后打印第一个字段。
  • 使用 TAB 分隔输出字段。
  • 省略包含 的行NO_GROUP
  • 在输出文件中,第一个和第二个字段的组合必须是唯一的(它们构成一个唯一键):任何具有相同键的进一步记录都将被丢弃。

解决方案:

awk 'FNR == 1 {delete a} !/NO_GROUP/ && !($2 in a) {print $2"\t"gensub(/\..*$/, "", 1, FILENAME)"\t"$1; a[$2]++;}' *.txt

试运行结果:

OG5_132922      psychrobacter_aquaticus WP_021815421.1
OG5_128110      psychrobacter_aquaticus WP_021815427.1
OG5_153487      psychrobacter_aquaticus WP_084606284.1
OG5_129150      psychrobacter_arcticus  WP_007394757.1
OG5_130915      psychrobacter_arcticus  WP_010195908.1
OG5_128110      psychrobacter_arcticus  WP_011281115.1
OG5_126760      psychrobacter_arcticus  WP_010196670.1
OG5_128312      psychrobacter_arcticus  WP_010196689.1
OG5_126678      psychrobacter_arcticus  WP_010196702.1
OG5_132922      psychrobacter_arcticus  WP_011281110.1
OG5_126722      psychrobacter_arcticus  WP_010196711.1
OG5_126681      psychrobacter_arcticus  WP_010196728.1

排序:

如果您想对结果进行排序,只需根据所需的输出将它们通过管道传输到sort或。sort -k2,2

相关内容