我可以通过以下方式过滤掉在我们的排队系统中陷入困境的工作:
> 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 }'
完全代替 cut 命令。
答案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
您可以将所有空格压缩为一个:
qjobs | grep "racon" | tr -s ' ' | cut -d " " -f3