awk não se comportando com qsub

0

Estou tentando executar um comando que é algo como isto

intersectBed -a yeast.v2.bed -b cov.txt -wa -wb | awk -v OFS="\t" '{print $7,$8,$9,$6,$11,$10}' > out.txt

out.txt parece com isso

chrI    151006  151096  0
chrI    142253  142619  53
chrI    87387   87500   8

Eu estou trabalhando no cluster e quando eu qsub o comando acima (que está enviando para o cluster) recebo o arquivo out.txt assim

chrIt151006t151096t0
chrIt142253t142619t53
chrIt87387t87500t8 

A linha de comando que estou usando com qsub é esta:

qsub -l h_vmem=4G -cwd -j y -b y -N test "intersectBed -a yeast.v2.bed -b cov.txt -wa -wb | awk -v OFS="\t" '{print \,\,\,\,\,\}' > out.txt"

Como você pode ver, eu tenho que escapar de cada coluna ($) com barra invertida para que o shell não a considere como sua variável on. Mas alguns como guia não funciona. Alguém pode me dizer o que está acontecendo aqui? É claro que posso usar sed 's/t/\t/g' após o comando awk, mas preciso entender o que está acontecendo aqui e por que não funciona.

Obrigado antecipadamente

    
por user3138373 15.03.2017 / 17:01

1 resposta

2

Você está fazendo:

 qsub ... "intersectBed  ... -v OFS="\t"...more double-quoted text"

Para que \t esteja fora das aspas duplas. Para o shell, fora das cotações, \ é outro operador de cotação. Há \t é como 't' ou "t" , então apenas t .

Você está realmente fazendo awk -v OFS=t .

Uso:

 qsub... "inter... | awk -v OFS='\t' '{print \,\,\,\,\,\}' > out.txt"

Ou, para se preocupar apenas com caracteres de aspas simples:

 qsub... 'inter... | awk -v OFS="\t" '\''{print $7,$8,$9,$6,$11,$10}'\'' > out.txt'

set -x é seu amigo para investigar esse tipo de problema de cotação.

    
por 15.03.2017 / 17:30

Tags