Внутри каждого столбца большого файла, удаляя все после определенного разделителя - PullRequest
2 голосов
/ 15 октября 2019

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

0/0:7,0:7:21:0,21,245 0/0:9,0:9:27:0,27,339 0/0:13,0:13:39:0,39,524

Я хочу удалить все в каждом столбце, чтобы вывод выглядел следующим образом:

0/0 0/0 0/0

Слишком много столбцов, чтобы вручную применить решение, такое как awk, где нужно ввести $ 1, $ 2 для каждого столбца.

Я пробовал несколько решений в R, ни одно из которых не дало результатов, которые я искал. Все они разделяют столбец, а не просто сохраняют первую запись. Это файл vcf, и я попытался использовать vcf2tsv, но я не могу заставить работать зависимости.

Например, я попробовал этот код:

test<-sub('(:<=\\:).*$', '', x, perl=TRUE)

, который дал мне следующее:

"c(\"0/0:8,0:8:24:0,24,305\", \"0/0:6,0:6:18:0,18,242\", \"0/0:5,0:5:15:0,15,200\",

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

1 Ответ

1 голос
/ 15 октября 2019

С примером ввода в вопросе вы можете использовать

sed 's#:[^ ]*##g' inputfile

, чтобы получить вывод

0/0 0/0 0/0

Сценарий sed заменит все, начиная с двоеточия (:), за которыми следуют все символы, кроме пробела ([^ ]) с пустой строкой для всех вхождений (g). Это означает, что он будет делать это во всех столбцах, разделенных пробелом.

...