web-dev-qa-db-fra.com

la commande de coupe ne semble pas fonctionner dans un tuyau

Je peux filtrer les tâches bloquées dans notre système de files d'attente avec:

> qjobs | grep "racon" 
       5240703 racon-3/utg001564l-racon-3.fasta  H   1     1   0     10.0   0.0    150   :03   
       5241418 racon-3/utg002276l-racon-3.fasta  H   1     1   0     10.0   0.0    150   :02   
       5241902 racon-3/utg002759l-racon-3.fasta  H   1     1   0     10.0   0.0    150   :03   
       5242060 racon-3/utg002919l-racon-3.fasta  H   1     1   0     10.0   0.0    150   :04   
       5242273 racon-3/utg003133l-racon-3.fasta  H   1     1   0     10.0   0.0    150   :03   
       5242412 racon-3/utg003270l-racon-3.fasta  H   1     1   0     10.0   0.0    150   :04   
       5242466 racon-3/utg003325l-racon-3.fasta  H   1     1   0     10.0   0.0    150   :03   

Cependant, qjobs | grep "racon" | cut -d " " -f2 n'est pas revenu, par exemple racon-3/utg003325l-racon-3.fasta. Qu'est-ce que j'ai raté?

10
user977828

Chaque espace compte pour le numéro de champ, même les premiers et les consécutifs. Par conséquent, vous devez utiliser -f9 au lieu de -f2. Vous pouvez également utiliser awk '{ print $2 }' à la place de la commande cut entièrement.

Si la sortie est cohérente dans son espacement

qjobs | grep "racon" | cut -c 16-47

produirait une sortie comme

racon-3/utg002276l-racon-3.fasta

Si vous voulez la première colonne, qui ressemble à un PID ou à un autre identifiant, alors:

qjobs | grep "racon" | awk ' { print $1 } '

Si vous recherchez la partie tg002276l qui ressemble à un nom d'utilisateur:

qjobs | grep "racon" | awk -F'[/-]' ' { print $3 } '

Awk utilise alors les barres obliques et les tirets comme séparateurs de champs, puis imprime la troisième colonne.

1
Criggie