Wednesday, 15 April 2015

Using awk to format an output for nstats -



Using awk to format an output for nstats -

i finish hostname server up-time using "nstats" command. script appears working ok. need help 1st column "complete" hostname , 7th column (server up-time) printed.

this next command give me partial hostnames:

host in $(cat servers.txt); nstats $host -h | awk 'begin {ifs="\t"} {$2=$3=$4=$5=$6=$9="" ; print}' ; done

bad output: (host-names got cutting off after 12th characters)

linux_server 223 days linux_server 123 days windows_serv 23 days windows_serv 23 days

expected output:

linux_server1 223 days linux_server2 123 days windows_server1 23 days windows_server2 123 days

the contents of servers.txt file follows:

linux_server1 linux_server2 windows_server1 windows_server2

output without awk

linxserve10% host in $(cat servers.txt); nstats $host -h ; done linux_server 0.01 47% 22% 56 05:08 20 days 17:21:00 linux_server 0.00 23% 8% 45 05:08 24 days 04:16:46 windows_serv 0.04 72% 30% 58 05:09 318 days 23:32:17 windows_serv 0.00 20% 8% 40 05:09 864 days 12:23:10 windows_serv 0.00 51% 17% 41 05:09 442 days 05:30:14

note: for host in $(cat servers.txt); nstats $host -h | awk -v server=$host 'begin {ifs="\t"} {$2=$3=$4=$5=$6=$9="" ; print server }' ; done *** works ok list finish hostname no server uptime.

any help can give appreciated.

do know may take fields print in awk?

for host in $(cat servers.txt); nstats $host -h | awk 'begin {ifs="\t"} {print $1,$7,$8}'; done

these print 3 fields interested.

the awk code labeled "note" totally useless -- equivalent to

for host in $(cat servers.txt); echo "$host" done

update: after realizing problem nstats command, awk line command be

awk -v server="$host" 'begin {ifs="\t"} {print server,$7,$8}';

then output looked (server uptime overwrote hostnames)

20 daysrver 24 daysrver 318 daysver 864 dayserv 442 dayserv

so set server variable @ end, looked much improve , can extract , play in excel. much jdamian!

host in $(cat servers.txt); nstats $host -h | awk -v server="$host" 'begin {ifs="\t"} {print $7,$8,server}'; done 20 days linux_server1 24 days linux_server2 318 days windows_server1 864 days windows_server2 442 days windows_server3

awk

No comments:

Post a Comment