Text-Processing

列不匹配和替換

  • August 27, 2012

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 列應替換為無

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

根據輸入文件的特性進行調整。我假設只有 2 個欄位的每一行都應該插入一個“無”。否則,所有其他行都原封不動地通過(末尾的1目的)。

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

這不是為修改的行單獨列印語句,而是在必要時修補欄位並將更正的行流式傳輸以由同一語句列印。

引用自:https://unix.stackexchange.com/questions/46187