How to format the output of df -h?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How to format the output of df -h?
# 1  
Old 05-05-2014
Question How to format the output of df -h?

Hi,

I need to format the output of the command "df -h":
Code:
 
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rootvg-lv01
271G 13G 245G 6% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/sda1 97M 50M 43M 55% /boot
/dev/mapper/d1vg-lv01
124G 105G 13G 90% /d0

I used awk:
Code:
 
df -h | awk '{printf "%-35s %10s %6s %6s %4s %s\n",$1,$2,$3,$4,$5,$6}'
Filesystem Size Used Avail Use% Mounted
/dev/mapper/rootvg-lv01
271G 13G 245G 6% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/sda1 97M 50M 43M 55% /boot
/dev/mapper/d1vg-lv01
124G 105G 13G 90% /d0

The lines with shorter filesystems, like "tmpfs, /dev/sda1" came out fine, but the longer filesystems, like "/dev/mapper/rootvg-lv01" above, somehow the size got put to the next line, making that line shifted. I've experimented with different column width and couldn't fix it. How do I get those columns all aligned?

thanks!

J.

Moderator's Comments:
Mod Comment Please use code tags next time for your code and data. Thanks
# 2  
Old 05-05-2014
Re-paste

Can you try to re-paste your results with CodeTags?
The example you provided did not appear to even block off 35 spaces for the first field.
# 3  
Old 05-05-2014
Code:
df -Ph

And then try your awk code
These 2 Users Gave Thanks to SriniShoo For This Post:
# 4  
Old 05-05-2014
i think the problem is that df will wrap the output if the Filesystem is long.
Perhaps your df has an option to stop this. df -P seems to on Linux coreutils. or have awk join the lines:

Code:
df -h | awk '!$2{getline x;$0=$0 x}{printf "%-35s %10s %6s %6s %4s %s\n",$1,$2,$3,$4,$5,$6}'

This User Gave Thanks to neutronscott For This Post:
# 5  
Old 05-05-2014
Quote:
Originally Posted by SriniShoo
Code:
df -Ph

And then try your awk code
that worked! THANKS!

---------- Post updated at 01:15 PM ---------- Previous update was at 01:09 PM ----------

Quote:
Originally Posted by neutronscott
i think the problem is that df will wrap the output if the Filesystem is long.
Perhaps your df has an option to stop this. df -P seems to on Linux coreutils. or have awk join the lines:

Code:
df -h | awk '!$2{getline x;$0=$0 x}{printf "%-35s %10s %6s %6s %4s %s\n",$1,$2,$3,$4,$5,$6}'


That works too! I'm not well versed in awk, do you mind to explain how that "!$2{getline x;$0=$0 x}" part works?

---------- Post updated at 01:24 PM ---------- Previous update was at 01:15 PM ----------

a related question about sorting that result:

Code:
df -Ph | sort -k 5,5 | awk '{printf "%-35s %10s %6s %6s %4s %s\n",$1,$2,$3,$4,$5,$6}'
tmpfs                                      16G      0    16G   0% /dev/shm
/dev/sda1                                  97M    50M    43M  55% /boot
/dev/mapper/rootvg-lv01                   271G    13G   245G   6% /
/dev/mapper/d1vg-lv01                     124G   105G    13G  90% /d0
Filesystem                                Size   Used  Avail Use% Mounted

the goal is to sort it with % used, but it looks that "sort" would treat 55% less than 6%, comparing only the first digit?

also how to keep the header line on the top?
# 6  
Old 05-05-2014
a) If the file system is the only field on that particular line ($2 zero or empty), read and append the next line to $0.
b) use numeric sort (-n or -g option)
c) not possible with sort; need to resort to head and tail, or do it in awk.
# 7  
Old 05-06-2014
As was already mentioned !$2 tests for 0 or "", and should be better replaced by ($2!="") or (NF<2) .
I usually write an implicit if-clause in ( ).
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Format output

Hello Team, I have the following details in a txt file (please note the spaces and tabs) C1 C2 C3 ------------------ --------------- ------------- abc, xyz 2 8 pqr 2 ... (9 Replies)
Discussion started by: H squared
9 Replies

2. Shell Programming and Scripting

Format with output

I have written some scripts that resulted in the table below (Column1 is ITEM, Column2 is Group, Column3 is Category and Column4 is Quantity) but I want the output in another format: Input: K123 X CATA 3 K123 Y CATA 4 K123 Z CATA 2 K123 X CATB 5 K123 Y CATB 2 K123 Z CATB 2 B65 M CATB... (7 Replies)
Discussion started by: aydj
7 Replies

3. Shell Programming and Scripting

Script to generate Excel file or to SQL output data to Excel format/tabular format

Hi , i am generating some data by firing sql query with connecting to the database by my solaris box. The below one should be the header line of my excel ,here its coming in separate row. TO_CHAR(C. CURR_EMP_NO ---------- --------------- LST_NM... (6 Replies)
Discussion started by: dani1234
6 Replies

4. UNIX for Dummies Questions & Answers

Format Output

Hello Learned People, Good evening. I have absolutely no idea as how to do this & I admit that I do not know anything in unix. I must learn this one of these days. Im a help desk incharge today & someone gave me this file to be formatted & I have a file like this. vi NewFile.txt 232... (8 Replies)
Discussion started by: RTAN
8 Replies

5. Shell Programming and Scripting

Dynamic output file generation using a input text file with predefined output format

Hi, I have two files , one file with data file with attributes that need to be sent to another file to generate a predefined format. Example: File.txt AP|{SSHA}VEEg42CNCghUnGhCVg== APVG3|{SSHA}XK|"password" AP3|{SSHA}XK|"This is test" .... etc --------- test.sh has... (1 Reply)
Discussion started by: hudson03051nh
1 Replies

6. UNIX for Advanced & Expert Users

format df -k output

i am running df -k command on aix machine. i got the output like this. i need to store into file and send that file into microsoft excel.i need to allign properly. Filesystem 512 blocks Free % Used Iused %Iused Mounted on /dev/hd4 262144 126488 52% ... (9 Replies)
Discussion started by: wintercoat
9 Replies

7. Shell Programming and Scripting

Help in Getting specified output format

Hi all, I have input text file of this format objectclass:endeavor pid:12345 postalAddress:379 PROSPECT ST street:STE B l:TORRINGTON st:CT postalCode:067905238 telephoneNumber:9999999999... (2 Replies)
Discussion started by: pintoo
2 Replies

8. Shell Programming and Scripting

How to format output

Dear all, I have written a program which access database and displays the values returned by the query . There are 10 columns to be displayed in one row. But am ending with 5 lines displayed on 1st line and the next 5 in the 2nd line. Ex : 21608 10-20-2007 148 Al's Appliance... (7 Replies)
Discussion started by: uday542
7 Replies

9. Shell Programming and Scripting

capturing output from top and format output

Hi all, I'd like to capture the output from the 'top' command to monitor my CPU and Mem utilisation.Currently my command isecho date `top -b -n1 | grep -e Cpu -e Mem` I get the output in 3 separate lines.Tue Feb 24 15:00:03 Cpu(s): 3.4% us, 8.5% sy .. .. Mem: 1011480k total, 226928k used, ....... (4 Replies)
Discussion started by: new2ss
4 Replies

10. UNIX for Dummies Questions & Answers

ls output format

below is the output is ls -l -rw-r--r-- 1 tonyt staff 3212 Apr 17 1999 file1 -rw-r--r-- 1 tonyt staff 4541 Mar 3 21:08 file2 why the date format is not the same? (6 Replies)
Discussion started by: tonyt
6 Replies
Login or Register to Ask a Question