разделить столбец текста с разделителями на несколько столбцов - PullRequest
0 голосов
/ 17 мая 2018

У меня есть файл, подобный представленному ниже.

chr1     15431658     A     T      GT:AD:DP:GQ:PL           0/1:15,20:35:66:211,0,222

Я хочу получить вывод, где я могу разделить 6-й столбец, разделенный символом ":".Как я могу сделать это в awk.

Это вывод, который я хочу

chr1    15431658   A   T    GT:AD:DP:GQ:PL      0/1   15,20   35   66   211,0,222

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

После awk может помочь вам в том же.

awk -F"[[:space:]]+" '{gsub(/:/,"\t",$NF)} 1' OFS="\t"   Input_file
0 голосов
/ 17 мая 2018

Просто используйте следующую команду awk:

echo 'chr1     15431658     A     T      GT:AD:DP:GQ:PL           0/1:15,20:35:66:211,0,222' | awk '{$6=gensub(/:/,"\t","g",$6); print $0}' | column -t
chr1  15431658  A  T  GT:AD:DP:GQ:PL  0/1  15,20  35  66  211,0,222

Вы можете заменить \t на столько пробелов, сколько вам нужно в вызове замены, последний, но не в последнюю очередь, поскольку он не указан в вашем сообщении, если вы хотите tab разделенные пробелами или столбцы, разделенные пробелами. Я не учел это, вы можете настроить это, изменив команду awk следующим образом (OFS="YOUR SEPARATOR"):

awk 'BEGIN{OFS="\t"}{$6=gensub(/:/,"\t","g",$6); print $0}' 
...