cutコマンドがパイプで動作しないようです。

cutコマンドがパイプで動作しないようです。

次のようにして、キューシステムで輻輳したタスクをフィルタリングできます。

> 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   

しかしqjobs | grep "racon" | cut -d " " -f2、例えば何も返されませんracon-3/utg003325l-racon-3.fasta。私が逃したものは何ですか?

答え1

すべてのスペースはフィールド番号に含まれ、先行スペースと連続スペースも含まれます。したがって、代わりに-f9使用する必要があります-f2。または、awk '{ print $2 }'切り取りコマンドを完全に置き換えることもできます。

答え2

出力間隔が一定の場合

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

次のような出力を生成します。

racon-3/utg002276l-racon-3.fasta

最初の列をPIDや他の識別子のように見せるには、次の手順を実行します。

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

探しているならutg002276l ユーザー名に似た部分:

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

これにより、awk はスラッシュとダッシュ文字をフィールド区切り文字として使用し、3 番目の列を印刷します。

答え3

すべてのスペースを1つに圧縮できます。

qjobs | grep "racon" | tr -s ' ' | cut -d " " -f3

関連情報