Как использовать awk для извлечения необходимых столбцов и создания нового файла?

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

systemd.unit=graphical.target

или

systemd.unit=multi-user.target

, чтобы переопределить неправильно сконфигурированную цель по умолчанию и явно загрузиться в режиме GUI или CLI, а затем использовать systemctl set-default graphical.target, чтобы восстановить нормальную цель по умолчанию.

0
12.03.2020, 18:36
2 ответа

Вам нужно будет извлечь соответствующие записи из каждого файла и записать результат в два новых временных файла (, возможно, используя awk), возможно, отсортировав их (с помощьюsort)одновременно (файлы примеров говорят, что они отсортированы, но, возможно, не по правильному ключу ). Вот пример обработки одного из файлов:

awk '$3 == "transcript" {printf("%s %s %s ", $3, $10, $12, $18);}' SampleA.GRCh38.gtf | sort -k 2 > tf1

Затем вы можете использовать joinдля объединения двух временных/промежуточных файлов, сгенерированных awk, чтобы каждая запись содержала два последних столбца из каждого файла.

Вот пример команды join, которую вы можете использовать:

join -o 1.1,1.2,1.3,2.3 -1 2 -2 2 tf1 tf2

Вы можете распечатать строку заголовка (, например. используя команду printf)перед запуском join, и вы можете заменить пробелы в выводе joinтабуляцией (, например. используя sed), или используйте другой скрипт awkдля форматирования вывода.

Из этих примеров вы сможете составить сценарий, который будет обрабатывать оба файла и создавать желаемый результат (, очищать временные файлы и т. д. ).

Обратите внимание, что в зависимости от размера файлов данных вы даже можете сделать все в одномawk(или pythonили perlи т.д. )программа (т.е. из обоих файлов легко удерживаться в памяти одновременно ).

0
28.04.2021, 23:20

Попытка выполнить команду «Ниже»

Шаг 1

awk '$3 ~ /transcript/{print $0}' file1|awk '{print $3,substr($12,2,12),substr($NF,2,8)}' > out1

ШАГ 2

awk '$3 == "transcript" {print substr($NF,2,8)}' file2  > out2

ЭТАП 3

paste out out1.txt | awk 'BEGIN{print "Type        transcript_id      SampleA      SampleB"}{print $0}'



Output

Type       transcript_id SampleA    SampleB
transcript MSTRG.7542.2 0.000000    1.000000
transcript MSTRG.7542.6 0.000000    3.000000
transcript MSTRG.7542.5 0.000000    0.000000
0
28.04.2021, 23:20

Теги

Похожие вопросы