Grep
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
。我錯過了什麼?
每個空格都計入欄位編號,甚至包括前導和連續的。因此,您需要使用
-f9
而不是-f2
. 或者,您可以awk '{ print $2 }'
完全使用 cut 命令代替。
如果輸出的間距是一致的
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 使用斜杠和破折號作為欄位分隔符,然後列印第三列。