Как проверить, равен ли первый столбец файла значению - PullRequest
0 голосов
/ 03 апреля 2020

Я использую awk '{if((echo $1 | cut -c1-3 align_1.da) eq "chr") print $1,$2,$3,$4,$5,$6}' align_1.da > align_1.dat, чтобы увидеть, равен ли 1-й столбец каждой строки в файле align_1.da значению "chr" и помещать ли это в align_1.dat. Тем не менее, я получаю синтаксическую ошибку, может ли один из них помочь?

Формат ввода:

          chr11 75781924 0 chr5 98293255 16

          asi:3 4454545  2 asi:5. 643356 16

          chr8 8201901 0 chr11 80828426 16

Ошибка:

           awk: cmd. line:1: {if((echo $1 | cut -c1-3 align_1.da) eq "chr") 
           print $1,$2,$3,$4,$5,$6}
           awk: cmd. line:1:                ^ syntax error
           awk: cmd. line:1: {if((echo $1 | cut -c1-3 align_1.da) eq "chr") 
           print $1,$2,$3,$4,$5,$6}
           awk: cmd. line:1:                                 ^ syntax error
           awk: cmd. line:1: {if((echo $1 | cut -c1-3 align_1.da) eq "chr") 
           print $1,$2,$3,$4,$5,$6}
           awk: cmd. line:1:                                      ^ syntax error
           awk: cmd. line:1: {if((echo $1 | cut -c1-3 align_1.da) eq "chr") 
           print $1,$2,$3,$4,$5,$6}
           awk: cmd. line:1:                                                ^ syntax error
           awk: cmd. line:1: {if((echo $1 | cut -c1-3 align_1.da) eq "chr") 
           print $1,$2,$3,$4,$5,$6}
           awk: cmd. line:1:                                                                      ^ syntax error

1 Ответ

1 голос
/ 03 апреля 2020

Вы пытаетесь использовать вывод cut внутри скрипта awk. Awk - это интерпретируемый язык сценариев, который будет читать ваш сценарий и затем запускаться в своем собственном процессе, а cut - это другая программа, полностью отделенная от awk. Существуют способы использования вывода внешних процессов изнутри awk, но в этом случае это не нужно, поскольку мы можем использовать функцию substr () для выполнения точно такого же действия:

awk '(substr($1, 1, 3) == "chr") {print $1,$2,$3,$4,$5,$6}' align_1.da  > align_1.dat
...