Вставить текст, если столбец содержит число - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть файл с разделителями табуляции, который выглядит следующим образом

10      7.98862e-05
10      cellular organisms; Bacteria; Proteobacteria; Betaproteobacteria; Burkholderiales; Burkholderiaceae; Ralstonia; Ralstonia solanacearum  0.000159772
10      0.000207704
10      cellular organisms; Bacteria; Terrabacteria group; Firmicutes; Clostridia; Clostridiales; Clostridiaceae; Clostridium; Clostridium sp. C105KSO15        0.00092668
10      9.58635e-05
10      0.000191727
10      0.000127818
10      cellular organisms; Bacteria; Terrabacteria group; Firmicutes; Clostridia; Clostridiales; Peptostreptococcaceae; Clostridioides; Clostridioides difficile       0.0                                                               0142198
10      cellular organisms; Bacteria; Terrabacteria group; Firmicutes; Clostridia; Clostridiales; Clostridiaceae; Clostridium; Clostridium sp. C105KSO15        0.00268418

Это должно быть три столбца, но в некоторых строках отсутствует второй столбец (бактериальная таксономия).Для этих строк я хочу переместить число в третий столбец и вставить некоторый текст (например, Unclassified).

Я пытался изменить некоторые команды, которые я нашел в Интернете, чтобы вставить Unclassified\t перед любым значениемво втором столбце, который начинается с числа, но не может заставить его работать.

Любая помощь будет высоко ценится.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Вы можете попробовать этот сед тоже

sed -E 's/([^\t]*\t)([0-9]\.[0-9].*$)/\1Unclassified\t\2/' infile
0 голосов
/ 25 апреля 2018

попробуйте эту строку:

awk -F'\t' -v OFS="\t" 'NF==2{$3=$2;$2="Unclassified"}7' file
...