У меня есть файл, который выглядит примерно так:
ID101 G T freq=.5 nonetype ANC=.1 addinfor
ID102 A T freq=.3 ANC=.01 addinfor
ID102 A T freq=.01 type=1 ALT=0.022 ANC=.02 addinfor
Как видите, каждая строка имеет немного различное количество столбцов. Я специально хочу столбец 1, столбец 2, столбец 3, столбец 4 и столбец, который начинается сANC=
Желаемый вывод:
ID101 G T freq=.5 ANC=.1
ID102 A T freq=.3 ANC=.01
ID102 A T freq=.01 ANC=.02
Я обычно использую команду awk для разбора файлов:
awk 'BEGIN {OFS = "\t"} {print $1, $2, $3, $4}'
Есть ли простой способ изменить эту команду для работы в подобных ситуациях?
Я думаю, что-то вроде этого может работать:
awk '{for(j=1;j<=NF;j++){if($j~/^ANC=/){print $j}}}'
Тем не менее, как я могу изменить это, чтобы также распечатать первые столбцы?
text-processing
sed
awk
cosmictypist
источник
источник
i=5
?Предполагая, что
ANC=
столбец всегда является вторым по последнему столбцу (как в примере данных):NF
количество полей (столбцов), на которыеawk
разбивается каждая запись (строка).$(NF-1)
это значение поля от второго до последнего.источник
краткое
$, =>
OFS
@F[0..3]
=>$F[0] $F[1] $F[2] $F[4]
источник