替换列中每个符号 (+/-) 的值

替换列中每个符号 (+/-) 的值

我正在尝试构建一个带有基因组坐标的 .bed 文件,而且我已经非常接近了。只差最后一步了。我有一个如下所示的文件:

LQNS02278165.1  13104710        13109495        BEL-1_PH-I      4785
LQNS02278165.1  9139127         9142308         BEL-1_PH-I      3181
LQNS02278165.1  9222957         9221339         BEL-1_PH-I      -1618

我需要用符号替换第 5 列,这将是基因组中的方向。理想情况下,输出如下所示:

LQNS02278165.1  13104710        13109495        BEL-1_PH-I      +
LQNS02278165.1  9139127         9142308         BEL-1_PH-I      +
LQNS02278165.1  9222957         9221339         BEL-1_PH-I      -

任何有关 awk 的建议将不胜感激!谢谢

答案1

这应该足够了:

awk '{$NF=($NF<0 ? "-" : "+")}1' file
  • $NF=($NF<0 ? "-" : "+")如果最后一个字段为负数,则将其替换为减号,否则将其替换为加号。

  • 1打印该行。

答案2

逗号

awk '{if ($NF ~ "-"){$NF="-";print }else{$NF="+";print }}' filename

输出

LQNS02278165.1 13104710 13109495 BEL-1_PH-I +
LQNS02278165.1 9139127 9142308 BEL-1_PH-I +
LQNS02278165.1 9222957 9221339 BEL-1_PH-I -

相关内容