2012-12-01 115 views
2

我需要幫助將文本添加到使用sed或awk的文本行中的幾個位置。這是我寫的df命令的輸出TEST.TXT將文本添加到行的中間

fsu:/dev/sda3    34407336 3348680 29282672 11%/
fsu:/dev/sda1    124427  11578 106425 10% /boot 
fsu:tmpfs     4086720   0 4086720 0% /dev/shm 
fsu:/dev/sdb1    20635732 725376 18862116 4% /cmdb 
fsu:/dev/sdc    51606140 2531372 46453328 6% /data 

我想提出的test.txt是這樣的:

fsu:/dev/sda3 T: 34407336 U: 3348680 A: 29282672 P: 11% M:/
fsu:/dev/sda1 T: 124427 U: 11578 A: 106425 P: 10% M: /boot 
fsu:tmpfs T: 4086720 U: 0 A: 4086720 P: 0% M: /dev/shm 
fsu:/dev/sdb1 T: 20635732 U: 725376 A: 18862116 P: 4% M: /cmdb 
fsu:/dev/sdc T: 51606140 U: 2531372 A:46453328 P: 6% M: /data 

我無法弄清楚如何添加數字前面的字母和冒號。

回答

5

使用awk

awk '{print $1, "T:", $2, "U:", $3, "A:", $4, "P:", $5, "M:", $6}' file 

輸出:

fsu:/dev/sda3 T: 34407336 U: 3348680 A: 29282672 P: 11% M:/
fsu:/dev/sda1 T: 124427 U: 11578 A: 106425 P: 10% M: /boot 
fsu:tmpfs T: 4086720 U: 0 A: 4086720 P: 0% M: /dev/shm 
fsu:/dev/sdb1 T: 20635732 U: 725376 A: 18862116 P: 4% M: /cmdb 
fsu:/dev/sdc T: 51606140 U: 2531372 A: 46453328 P: 6% M: /data 

管通過column -t,如果你想要的列很好對齊。

3

這聽起來像awk工作:

awk '{ printf "%s T: %s U: %s A: %s P: %s M: %s\n", $1, $2, $3, $4, $5, $6 }' file 

結果:

fsu:/dev/sda3 T: 34407336 U: 3348680 A: 29282672 P: 11% M:/
fsu:/dev/sda1 T: 124427 U: 11578 A: 106425 P: 10% M: /boot 
fsu:tmpfs T: 4086720 U: 0 A: 4086720 P: 0% M: /dev/shm 
fsu:/dev/sdb1 T: 20635732 U: 725376 A: 18862116 P: 4% M: /cmdb 
fsu:/dev/sdc T: 51606140 U: 2531372 A: 46453328 P: 6% M: /data 
+0

非常感謝您! –