※ 引述《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))}'
--
: 標題: [問題] 好幾行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))}'
--
All Comments