How to filter characters if lines are aligned to right side using awk or sed -


i have output of command given here.

                        id   speed    ncpu    pmem    vmem      ep   nproc      io    iops                         p1     100       1   1024m   1024m      20     100    1024    1024                         a2     100       1   1024m   1024m      20     100    1024    1024                      b2 b3     100       1   1024m   1024m      20     100    1024    1024                   c3 c4 c5     100       1   1024m   1024m      20     100       0    1024 

i need filter out values come under column 'id'

the command awk '{print $1} prints only:

p1 a2 b2 c3  

which not desired output.

the output i'm looking is.

p1 a2 b2 b3 c3 c4 c5 

one way @ 'remove last 8 columns data':

awk '{ $(nf-8+1) = ""; nf -= 8; print }' 

output:

id p1 a2 b2 b3 c3 c4 c5 

if don't assign $(nf-8+1), awk doesn't think $0 might have changed prints line unchanged. , use of $(nf-8+1) allow use variable specify how many trailing columns omit:

awk -v omit="${howmany:-8}" '{ $(nf-omit+1) = ""; nf -= omit; print }' 

if set shell variable howmany=6, see 'speed' , 'ncpu' columns too:

id speed ncpu p1 100 1 a2 100 1 b2 b3 100 1 c3 c4 c5 100 1 

tested both bsd , gnu variants of awk.


Comments