[問題] 好幾行stdout一次只處理一行內的數字

看板Linux作者 (玻璃做的大叔)時間9年前 (2016/04/05 10:05), 編輯推噓2(208)
留言10則, 4人參與, 最新討論串1/2 (看更多)
我舉個例 fdisk -lu /dev/sda|grep ^/dev/sda /dev/sda1 63 1646699 823318+ 83 Linux /dev/sda2 1690000 5450000 1880000+ 83 Linux /dev/sda3 5559999 11979999 3210000+ 83 Linux /dev/sda4 11995000 2930275054 1459140027+ 5 Extended /dev/sda5 11999999 17187199 2593600+ 83 Linux 像這樣,我雖然可以用cut分別切 cut -c 6-10 cut -c 16-25 cut -c 28-37 cut -c 39-49 得到一連串裝置名(文字)、起點、終點、長度,但是我想把這個送到其他指令 譬如dd或badblocks做處理,以行為單位 有點像是把置名(文字)、起點、終點、長度分別設成$A,$B,$C,$D這樣, 然後我再把這些變數丟到後續指令像是 /sbin/badblocks -sv /dev/sda -o /tmp/$A.bad $C $B 所以和其他行沒關係,一次只處理一行的資訊。 請問我該如何處理? -- "Don't hate the player. Hate the game." 當看到哪個名人賺了大錢,領到高額補助或利息,不要去指責他, 而是要指責那個制度、創造那個制度的人,以及默許那個制度的人。 不然你認為一個人不領18%或是一個人不炒房價,就會改變整體環境嗎? 還不如改變【修改制度的人】,才能從根源改變一切。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.36.217 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1459821956.A.D79.html

04/05 10:12, , 1F
awk
04/05 10:12, 1F

04/05 10:26, , 2F
awk '{print $1 $2 $3 $4}' | read A B C D
04/05 10:26, 2F

04/05 10:36, , 3F
請問awk會把$4後面的+號也抓到,有辦法排除嗎?Y
04/05 10:36, 3F

04/05 11:00, , 4F
D=`echo ${D} | cut -d"+" -f1` 類似這樣?
04/05 11:00, 4F

04/05 11:10, , 5F
awk 的 print 會吃掉空白, 用 printf 或是空白加上""
04/05 11:10, 5F

04/05 11:12, , 6F
太長了, 一行貼不上來, 且讓我回文占一下版面...
04/05 11:12, 6F

04/05 11:17, , 7F
fdisk -lu /dev/sda|grep ^/dev/sda|awk '{print $1"\t"$2"
04/05 11:17, 7F

04/05 11:17, , 8F
\t"$3"\t"$4}' | read A B C D&&echo $B $D,沒印出東西
04/05 11:17, 8F

04/05 20:59, , 9F
read不吃管線啊?看來我得sed一行一行抓了
04/05 20:59, 9F

04/05 23:35, , 10F
把指令用 awk 印出來,pipe 給 sh -
04/05 23:35, 10F
文章代碼(AID): #1N0ns4rv (Linux)
文章代碼(AID): #1N0ns4rv (Linux)