看板 Linux 關於我們 聯絡資訊
※ 引述《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
LIAR: 感謝,gensub和substr我沒學過,受教了。 04/05 11:48
LIAR: 那個可能有問題,因為是無差別刪除,如果有些數字後面沒有+ 04/05 11:49
LIAR: 號,就會少一個位數。 04/05 11:50
LIAR: substr無差別,gensub就正常,不過我還在研究gensub語法 04/05 11:51