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

看板Linux作者 (Rickie Yang)時間8年前 (2016/04/05 11:33), 8年前編輯推噓1(103)
留言4則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《LIAR (玻璃做的大叔)》之銘言: : 標題: [問題] 好幾行stdout一次只處理一行內的數字 : 時間: Tue Apr 5 10:05:52 2016 : : 我舉個例 : fdisk -lu /dev/sda|grep ^/dev/sda : : /dev/sda5 11999999 17187199 2593600+ 83 Linux : : 像這樣,我雖然可以用cut分別切 : cut -c 6-10 : cut -c 16-25 : cut -c 28-37 : cut -c 39-49 : : /sbin/badblocks -sv /dev/sda -o /tmp/$A.bad $C $B : 所以和其他行沒關係,一次只處理一行的資訊。 : -- → asilzheng: awk '{print $1 $2 $3 $4}' | read A B C D 04/05 10:26 → LIAR: 請問awk會把$4後面的+號也抓到,有辦法排除嗎?Y 04/05 10:36 awk 會吃掉空白, print 應該會全串在一起. 可能要加 "" awk '{print $1" "$2" "$3" "$4}' 或是改用 printf 看你要用 regexp 精確一點替換 awk '{printf("%s %s %s %s\n",gensub(/^.*\//,"","1",$1),$2,$3, gensub(/+$/,"","1",$4))}' 或是 substr 直接抓 awk '{printf("%s %s %s %s\n",substr($1,5),$2,$3, substr($4,1,length($4)-1))}' -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.206.6.85 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1459827214.A.96B.html ※ 編輯: rickieyang (180.206.6.85), 04/05/2016 11:36:14

04/05 11:48, , 1F
感謝,gensub和substr我沒學過,受教了。
04/05 11:48, 1F

04/05 11:49, , 2F
那個可能有問題,因為是無差別刪除,如果有些數字後面沒有+
04/05 11:49, 2F

04/05 11:50, , 3F
號,就會少一個位數。
04/05 11:50, 3F

04/05 11:51, , 4F
substr無差別,gensub就正常,不過我還在研究gensub語法
04/05 11:51, 4F
文章代碼(AID): #1N0p8Ebh (Linux)
文章代碼(AID): #1N0p8Ebh (Linux)