作者rickieyang (Rickie Yang)
看板Linux
標題Re: [問題] 好幾行stdout一次只處理一行內的數字
時間Tue Apr 5 11:33:28 2016
※ 引述《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