2011-03-24 66 views
2
cmd1 | cmd2 

將僅以cmd1輸出作爲參數調用cmd2一次。我想要的是每一行cmd1輸出作爲參數逐個調用cmd2。也許看起來像這樣:bash中是否有管道映射?

cmd1 | map cmd2 

我知道我可以自己寫一個,只是想知道是否有內置的支持已經?

回答

2
cmd1 | xargs -l cmd2 

這是我最喜歡的方式。感謝Paulo Ebermann!

+0

我(也許所有的Mac用戶)更喜歡'cmd1 | xargs -L1 cmd2'這更通用,'-l'選項在GNU(-L [max-lines]的同義詞)中支持,但不支持在BSD中。 – 2013-02-13 11:09:58

+0

@HuiZheng很高興再次見到你! – Dagang 2013-02-16 14:23:38

2
cmd1 | while read x 
do 
    cmd2 $x 
done 
+0

謝謝,這解決了這個問題,但我想它是一個簡單的和一般的地圖功能。 – Dagang 2011-03-24 08:07:06

3
for i in `cmd1`; do cmd2 $i; done 

應該這樣做。

+0

我真正想要的是管材加工,所以這不是答案。 – Dagang 2011-03-24 08:04:04

0

使用xargs的

cmd1|xargs cmd2 

如:

ls xyz*|xargs grep "abc" 

農行將在其名稱中的所有文件進行搜索開始與XYZ

+0

請注意,對於每行'cmd1','xargs'並不能幫助你準確調用'cmd2' ** ** **。它會盡可能地調用'cmd2'! – 2011-03-24 06:52:20

+0

@Joachim Sauer,你是對的:) – Dagang 2011-03-24 08:02:25

+2

@Joachim:有'l'切換到'xargs',但是這樣做。 – 2011-03-24 10:57:20

相關問題