манипуляция awk

У меня есть такой файл

SRR959756.1081725 1 RNU2-54P:112:133:hsa-miR-1246 SRR959756.1162547 1 RNU2-54P:112:133:hsa-miR-1246 SRR959756.128602 2 RNU2-37P:85:108:hsa-miR-877-3p RNU2-59P:99:122:hsa-miR-877-3p 

Это файл с разделяемой вкладкой, где я хочу получить результат, подобный этому

 SRR959756.1081725 1 RNU2-54P:112:133:hsa-miR-1246 SRR959756.1162547 1 RNU2-54P:112:133:hsa-miR-1246 SRR959756.128602 2 RNU2-37P:85:108:hsa-miR-877-3p SRR959756.128602 2 RNU2-59P:99:122:hsa-miR-877-3p 

Так что, как и в третьей строке, у меня есть 3-й и 4-й столбцы. Но 1-й и 2-й столбцы всегда должны быть напечатаны, а затем 3-й столбец, затем в следующей строке 1-й и 2-й столбцы, а затем 4-й столбец.

Как я могу сделать это в awk

2 Solutions collect form web for “манипуляция awk”

 $ awk -v OFS='\t' '{for (i=3;i<=NF;i++)print $1,$2,$i}' file SRR959756.1081725 1 RNU2-54P:112:133:hsa-miR-1246 SRR959756.1162547 1 RNU2-54P:112:133:hsa-miR-1246 SRR959756.128602 2 RNU2-37P:85:108:hsa-miR-877-3p SRR959756.128602 2 RNU2-59P:99:122:hsa-miR-877-3p 

Как это работает

  • -v OFS='\t'

    Это устанавливает разделитель выходного поля, AKA OFS , на вкладку.

  • for (i=3;i<=NF;i++) print $1,$2,$i

    Это запускает цикл, начинающийся со столбца 3 и всех столбцов после и печатает их в строке, предшествующей столбцам 1 и 2.

 awk '{print $1,$2,$3}$4{print $1,$2,$4}' 

==

 awk '{print $1,$2,$3;$3="\b"}$4' 

или

 awk -v OFS="\t" '$4{$4="\n"$1"\t"$2"\t"$4}1' 

==

 awk -v OFS="\t" '$4{sub("^","\n"$1"\t"$2"\t",$4)}1' 

Если вы хотите отформатированный вывод, вы можете использовать либо переменную OFS по -v OFS='\t' либо вывод трубы через column -t

  • Проверить перестановку с помощью awk
  • Не удается выполнить команду для определенного столбца с gawk
  • Вычислить медианное значение для столбца и сказать, если это значение «ОК» или «ОШИБКА», если оно находится в допустимом диапазоне
  • Как использовать awk для печати, если значение столбца имеет четное число
  • значение столбца печати, основанное на совпадении имени столбца в awk / sed
  • Как выполнить rsync только определенный список файлов в том же месте на другом сервере
  • Удалите кусок строк в соответствии с порядковыми номерами
  • Разделение одного файла на несколько файлов на основе совпадающих строк в Linux
  • Как удалить двойные кавычки из файла, но не внутри двойных кавычек
  • Сортировка файла по второй колонке
  • Шаблон совпадения, выполнить расчет и распечатать только 3 или 4 значения плавающего значения max
  • Interesting Posts

    Установка и удаление gnome на debian

    Различные разделы загрузки для двойной загрузки

    Aptitude – удаление автоматически установленных пакетов, рекомендованных другими пакетами

    Обеспечить соответствие требованиям RPM требованиям к зависимости других установленных пакетов

    Проблема подключения SMTP в Zenoss («Соединение неожиданно закрыто»)

    найти дубликат в первых, вторых столбцах и числах в третьем столбце

    Что заставляет logcheck загружать 100% загрузки процессора?

    Какой дистрибутив Linux лучше всего подходит для мультимедиа и игр?

    Можно ли проверить, где был указан псевдоним?

    Как изменить кодовую фразу для прохода (менеджер паролей)

    Как заставить Debian запускать скрипт m python при запуске?

    Как ssh в ubuntu (настроено в виртуальном боксе) при выключенном

    Xorg.conf оставляет меня без видимых результатов

    В чем разница между этими двумя командами dd?

    Выход из сценария оболочки с вложенными циклами

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