Как выборочно удалять столбцы и строки с помощью 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?

One Solution collect form web for “Как выборочно удалять столбцы и строки с помощью bash?”

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

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

 cut -f1,3,6 

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

  • Почему поля, не разделенные пробелом на выходе этого примера?
  • grep точный блок строк (содержимое файла1) из файла2
  • Получите часть строки до последней косой черты
  • Скопируйте определенный процент каждого файла в каталог в новый файл
  • grep диапазон временных меток unix из файла журнала
  • Подсчитайте максимальную длину символа для всех полей данных в упрощенном файле csv и выведите на txt
  • Как извлечь часть строки из файла
  • размещение слов, соответствующих ключу в одном ряду
  • Как подсчитать количество символов в строке, кроме определенного символа?
  • удалите все дубликаты из текстового файла без сортировки
  • Определите максимальную длину столбца для каждого столбца в упрощенном csv-файле (по одной строке в строке)
  • Скрипт сопоставляет буквенный шаблон по нескольким строкам?
  • Linux и Unix - лучшая ОС в мире.