2015-05-23 75 views
1

我試圖將下面的輸出組合成一個命令。問題是我試圖抓住的領域是相反的順序。我被告知剪切不支持「反向」選項並使用AWK來達到這個目的,但它並沒有最終達到我的目的。我試圖將ls-l的輸出作爲/ dev/block來返回分區,並根據命令的輸出自動爲每個輸出行建立一個dd if =/of =。Sed,Awk用於組合兩條切割語句的輸出

我試圖輸出通過管道到AWK:

cut -d' ' -f23,25 ... | awk '{print $2,$1}' 

然而,使用sed來輸入前綴和後綴時,結果是,它不是以適當的順序。

我構建了下面的兩個語句,它們分別返回期望的輸出,只是尋找使用sed/awk以最有效的方式組合這兩個語句的「正確」方法。

ls -l /dev/block/platform/msm_sdcc.1/by-name/ | cut -d' ' -f 25 | sed "s/^/dd if=/" 


ls -l /dev/block/platform/msm_sdcc.1/by-name/ | cut -d' ' -f 23 | sed "s/.*/of=\/external_sd\/&.dsk/" 

任何援助將不勝感激。

謝謝。

+1

顯示'ls -l/dev/block/platform/msm_sdcc.1/by-name /'的樣本輸出以及您希望的樣本輸入輸出。 – Cyrus

回答

3

如果您已經在使用awk,我認爲您不需要cutsed。你也許可以做一些像下面,但我不得不相信你在球場上的數字

ls -l /dev/block/platform/msm_sdcc.1/by-name | awk '{print "dd if=/"$25 " of=/" $23 ".dsk"}' 

awk將分割上所有空白,不只是空格字符,因此它可能的領域將轉向一些,儘管它也可能更可靠。

+0

感謝Eric,awk'{print「dd if = /」$ 8「of = /」$ 6「.dsk」}'結束了這項工作,只需要考慮到空白和空間的分割。再次感謝! – Clu