列不匹配和替换

列不匹配和替换

input.txt(制表符分隔)

TTTTOTTT00000000008  RTTTT899      5.00E-28
TTTTOTTT00000000046  RTTTWRR       3.00E-31
TTTTOTTT00000000051  2.00E-11
TTTTOTTT00000000051  7.00E-12
TTTTOTTT00000000054  5.00E-22
TTTTOTTT00000000061  YTRYR         1.00E-11
TTTTOTTT00000000078  ETNRR8        6.00E-17
TTTTOTTT00000000174  TYTYT         1.00E-11
TTTTOTTT00000000203  UUUE          9.00E-20

我的文件列混淆了。在此文件(input.txt)中。第 3 列有空格,列应填充第 2 列行,第 2 列行应替换为无

输出.txt(制表符分隔)

TTTTOTTT00000000008  RTTTT899      5.00E-28
TTTTOTTT00000000046  RTTTWRR       3.00E-31
TTTTOTTT00000000051  none          2.00E-11
TTTTOTTT00000000051  none          7.00E-12
TTTTOTTT00000000054  none          5.00E-22
TTTTOTTT00000000061  YTRYR         1.00E-11
TTTTOTTT00000000078  ETNRR8        6.00E-17
TTTTOTTT00000000174  TYTYT         1.00E-11
TTTTOTTT00000000203  UUUE          9.00E-20

答案1

awk -v 'OFS=\t' 'NF == 2 { print $1, "none", $2; next } 1' input.txt > output.txt

根据输入文件的特征进行调整。我假设只有 2 个字段的每一行都应该插入一个“none”。否则,所有其他行都将不加改变地通过(1最后的目的)。

答案2

awk -v OFS="\t" 'NF==2{$2="none\t"$2}1' test_in.txt

它不是为修改的行提供单独的打印语句,而是在必要时修补字段并流式传输要由同一语句打印的更正行。

相关内容