Как выборочно удалять столбцы и строки с помощью bash?

В настоящее время у меня есть набор данных, который выглядит так:

ВХОД

Hybridization REF TCGA-FA-8693-01A-11D-2399-05 TCGA-FA-8693-01A-11D-2399-05 TCGA-FA-8693-01A-11D-2399-05 TCGA-FA-8693-01A-11D-2399-05 TCGA-FA-A4BB-01A-11D-A31Y-05 TCGA-FA-A4BB-01A-11D-A31Y-05 TCGA-FA-A4BB-01A-11D-A31Y-05 TCGA-FA-A4BB-01A-11D-A31Y-05 Composite Element REF Beta_value Gene_Symbol Chromosome Genomic_Coordinate Beta_value Gene_Symbol Chromosome Genomic_Coordinate cg00000029 0.856505141 RBL2 16 53468112 0.334665026 RBL2 16 53468112 cg00000108 NA C3orf35 3 37459206 NA C3orf35 3 37459206 cg00000109 NA FNDC3B 3 171916037 NA FNDC3B 3 171916037 

Набор данных намного больше и составляет почти 10 ГБ. Так слишком большой, чтобы делать в R, например.

Тем не менее, многие столбцы эффективно дублируются. Например, мне нужно сохранить только один из столбцов под названием (вторая строка) Gene_Symbol , Chromosome и Genomic_Coordinate . Отдельные столбцы Beta_value должны оставаться, потому что они различны для каждого образца. Идентификаторы образцов находятся в первой строке. Итак, пример желаемого вывода выше:

ЖЕЛАТЕЛЬНЫЙ ВЫХОД

 Hybridization REF Gene_Symbol Chromosome Genomic_Coordinate TCGA-FA-8693-01A-11D-2399-05 TCGA-FA-A4BB-01A-11D-A31Y-05 cg00000029 RBL2 16 53468112 0.856505141 0.334665026 cg00000108 C3orf35 3 37459206 NA NA cg00000109 FNDC3B 3 171916037 NA NA 

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

Каков наиболее эффективный способ сделать это с помощью bash?

  • Проверить количество слов в файле, содержащем конкретную букву
  • Сценарий для разбора полей
  • awk для замены столбцов и печати, если условие выполнено
  • Удалить строки, содержащие пустые поля
  • для петли над входными линиями
  • Выбор строк в файле, который не содержит значения в другом файле
  • Поиск среднего количества строк в файле
  • Как искать файл для каждой записи в списке и печатать новый файл для каждой записи
  • One Solution collect form web for “Как выборочно удалять столбцы и строки с помощью bash?”

    Предполагая, что ваши заголовки – это всего две строки в верхней части файла, я просто исправлю их вручную. (Простой способ: конец трубы tail -n +3 чтобы пропустить первые две строки, а затем объединить файл с вашими желаемыми заголовками.)

    Затем, остальное вы можете сделать с cut , который по умолчанию делится на символы [TAB], что очень удобно, потому что это то, что у вас уже есть. Просто подключитесь к

     cut -f1,3,6 

    или что угодно (в этом примере, выбрав первый, третий и шестой столбцы).

    Interesting Posts

    Диспетчер свопинга указан, но он не используется

    Не удается обновить Manjaro во время chroot

    Почему мой блок Systemd arkos-redis загружен, но неактивен (мертв)?

    Получение идентификатора родительского / дочернего процесса из определенного идентификатора процесса

    Использовать awk интерактивно через трубу

    Анализ аргументов командной строки из pargs в сценарии оболочки

    Как разрешить `named` (bind9) пересылать определенные домены на другой сервер имен?

    Почему моя система redhat 5.11 имеет так много процессов ext4-dio-unrit?

    Каков наилучший способ загрузить эту

    Почему звездочки звездочки совпадают?

    Как настроить несколько серверов NIS для клиентов CentOS 6?

    Добавление уровней выполнения в ubuntu

    Как исправить этот spec-файл: он продолжает давать мне sed-ошибки, но единственный sed задолго до возникновения ошибки?

    Как заставить ноутбук переключиться на внешний монитор HDMI при подключении?

    mount.cifs медленный

    Linux и Unix - лучшая ОС в мире.