Dear folks,
I have found numerous guides using awk to format stats. I can get stats from a website, but when I paste them they get pasted one per line, I can get them to one line using awk '{printf("%s ",$0)}' and the filename here, but what I want to do is to get the first 11 records and print out a new line "\n", then get the next 11 record and get new line "\n"
I get the data from mediotiempo.com,
data:
Pos. Equipo JJ JG JE JP GF GC DIF PTS 1 Monterrey 17 12 1 4 38 23 15 37 2 Pachuca 17 8 6 3 31 16 15 30 3 León 17 9 3 5 29 19 10 30 4 América 17 8 5 4 34 22 12 29 5 Chivas 17 7 7 3 26 16 10 28 6 Morelia 17 8 4 5 25 24 1 28 7 Santos 17 8 3 6 22 20 2 27 8 Tigres 17 6 6 5 29 19 10 24 9 Cruz Azul 17 5 7 5 25 24 1 22 10 Pumas 17 5 7 5 23 24 -1 22 11 Toluca 17 5 7 5 20 21 -1 22 12 Puebla 17 5 7 5 21 26 -5 22 13 Club Querétaro 17 5 4 8 21 26 -5 19 14 Club Tijuana 17 3 9 5 17 26 -9 18 15 Atlas 17 3 5 9 18 26 -8 14 16 Dorados 17 4 2 11 18 32 -14 14 17 Veracruz 17 2 8 7 18 34 -16 14 18 Chiapas FC 17 3 3 11 16 33 -17 12
to
Pos Equipo JJ JG JE JP GF GC DIF PTS 1 Monterrey 16 12 1 3 37 21 16 37 2 America 16 8 4 4 33 21 12 28 3 Pachuca 16 7 6 3 29 15 14 27 4 Leon 16 8 3 5 28 19 9 27 5 Santos 16 8 3 5 22 19 3 27 6 Chivas 16 6 7 3 25 16 9 25 7 Morelia 16 7 4 5 23 23 0 25 8 CruzAzul 16 5 7 4 25 21 4 22 9 Tigres 16 5 6 5 26 19 7 21 10 Pumas 16 5 6 5 22 23 -1 21 11 Toluca 16 4 7 5 18 20 -2 19 12 ClubQueretaro 16 5 4 7 20 23 -3 19 13 Puebla 16 4 7 5 18 25 -7 19 14 ClubTijuana 16 3 8 5 17 26 -9 17 15 Dorados 16 4 2 10 18 31 -13 14 16 Veracruz 16 2 8 6 17 32 -15 14 17 Atlas 16 3 4 9 18 26 -8 13 18 ChiapasFC 16 3 3 10 15 31 -16 12
using a sed command.
I have parts of commands as follows:
#!/bin/sh
# Check for arguments if [ $# -eq 0 ]; then echo "Usage: $(basename $0) filename" exit 1 fi
if [ ! -f $1 ]; then echo "File "$1" doesn't exist!" exit 0 fi
awk '
NR == 1 { printf "%2s %-14s %3s %3s %3s %3s %3s %3s %3s %3s \n", "Pos", "Equipo", "JJ", "JG", "JE", "JP", "GF", "GC" , "DIF", "PTS" }
NR >= 2 { printf "%2d %-14s %3d %3d %3d %3d %3d %3d %3d %3d \n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10 '\n' }' $1
but it just prints the first line and that is it because it treats the data as a single line. If that is possible otherwise I will have to do it manually.
Best regards,
Antonio
____________________________________________________________ FREE ONLINE PHOTOSHARING - Share your photos online with your friends and family! Visit http://www.inbox.com/photosharing to find out more!
Am 09.05.2016 um 18:24 schrieb Antonio Olivares:
Dear folks,
I have found numerous guides using awk to format stats. I can get stats from a website, but when I paste them they get pasted one per line, I can get them to one line using awk '{printf("%s ",$0)}' and the filename here, but what I want to do is to get the first 11 records and print out a new line "\n", then get the next 11 record and get new line "\n"
I get the data from mediotiempo.com,
data:
Pos. Equipo JJ JG JE JP GF GC DIF PTS 1 Monterrey 17 12 1 4 38 23 15 37 2 Pachuca 17 8 6 3 31 16 15 30 3 León 17 9 3 5 29 19 10 30 4 América 17 8 5 4 34 22 12 29 5 Chivas 17 7 7 3 26 16 10 28 6 Morelia 17 8 4 5 25 24 1 28 7 Santos 17 8 3 6 22 20 2 27 8 Tigres 17 6 6 5 29 19 10 24 9 Cruz Azul 17 5 7 5 25 24 1 22 10 Pumas 17 5 7 5 23 24 -1 22 11 Toluca 17 5 7 5 20 21 -1 22 12 Puebla 17 5 7 5 21 26 -5 22 13 Club Querétaro 17 5 4 8 21 26 -5 19 14 Club Tijuana 17 3 9 5 17 26 -9 18 15 Atlas 17 3 5 9 18 26 -8 14 16 Dorados 17 4 2 11 18 32 -14 14 17 Veracruz 17 2 8 7 18 34 -16 14 18 Chiapas FC 17 3 3 11 16 33 -17 12
to
Pos Equipo JJ JG JE JP GF GC DIF PTS 1 Monterrey 16 12 1 3 37 21 16 37 2 America 16 8 4 4 33 21 12 28 3 Pachuca 16 7 6 3 29 15 14 27 4 Leon 16 8 3 5 28 19 9 27 5 Santos 16 8 3 5 22 19 3 27 6 Chivas 16 6 7 3 25 16 9 25 7 Morelia 16 7 4 5 23 23 0 25 8 CruzAzul 16 5 7 4 25 21 4 22 9 Tigres 16 5 6 5 26 19 7 21 10 Pumas 16 5 6 5 22 23 -1 21 11 Toluca 16 4 7 5 18 20 -2 19 12 ClubQueretaro 16 5 4 7 20 23 -3 19 13 Puebla 16 4 7 5 18 25 -7 19 14 ClubTijuana 16 3 8 5 17 26 -9 17 15 Dorados 16 4 2 10 18 31 -13 14 16 Veracruz 16 2 8 6 17 32 -15 14 17 Atlas 16 3 4 9 18 26 -8 13 18 ChiapasFC 16 3 3 10 15 31 -16 12
using a sed command.
I have parts of commands as follows:
#!/bin/sh
# Check for arguments if [ $# -eq 0 ]; then echo "Usage: $(basename $0) filename" exit 1 fi
if [ ! -f $1 ]; then echo "File "$1" doesn't exist!" exit 0 fi
awk '
NR == 1 { printf "%2s %-14s %3s %3s %3s %3s %3s %3s %3s %3s \n", "Pos", "Equipo", "JJ", "JG", "JE", "JP", "GF", "GC" , "DIF", "PTS" }
NR >= 2 { printf "%2d %-14s %3d %3d %3d %3d %3d %3d %3d %3d \n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10 '\n' }' $1
but it just prints the first line and that is it because it treats the data as a single line. If that is possible otherwise I will have to do it manually.
Best regards,
Antonio
If you manage that the club names are always single fields of a reasonable length, then
awk '{ for (i = 1; i <= NF; i++) if (i % 10) printf "%s\t", $i; else printf "%s\n", $i }' $yourinputfile
does what you want.
Alexander
-----Original Message----- From: ad+lists@uni-x.org Sent: Mon, 9 May 2016 20:47:49 +0200 To: users@lists.fedoraproject.org Subject: Re: using awk for selective printing, and adding a new line
Am 09.05.2016 um 18:24 schrieb Antonio Olivares:
Dear folks,
I have found numerous guides using awk to format stats. I can get stats from a website, but when I paste them they get pasted one per line, I can get them to one line using awk '{printf("%s ",$0)}' and the filename here, but what I want to do is to get the first 11 records and print out a new line "\n", then get the next 11 record and get new line "\n"
I get the data from mediotiempo.com,
data:
Pos. Equipo JJ JG JE JP GF GC DIF PTS 1 Monterrey 17 12 1 4 38 23 15 37 2 Pachuca 17 8 6 3 31 16 15 30 3 León 17 9 3 5 29 19 10 30 4 América 17 8 5 4 34 22 12 29 5 Chivas 17 7 7 3 26 16 10 28 6 Morelia 17 8 4 5 25 24 1 28 7 Santos 17 8 3 6 22 20 2 27 8 Tigres 17 6 6 5 29 19 10 24 9 Cruz Azul 17 5 7 5 25 24 1 22 10 Pumas 17 5 7 5 23 24 -1 22 11 Toluca 17 5 7 5 20 21 -1 22 12 Puebla 17 5 7 5 21 26 -5 22 13 Club Querétaro 17 5 4 8 21 26 -5 19 14 Club Tijuana 17 3 9 5 17 26 -9 18 15 Atlas 17 3 5 9 18 26 -8 14 16 Dorados 17 4 2 11 18 32 -14 14 17 Veracruz 17 2 8 7 18 34 -16 14 18 Chiapas FC 17 3 3 11 16 33 -17 12
to
Pos Equipo JJ JG JE JP GF GC DIF PTS 1 Monterrey 16 12 1 3 37 21 16 37 2 America 16 8 4 4 33 21 12 28 3 Pachuca 16 7 6 3 29 15 14 27 4 Leon 16 8 3 5 28 19 9 27 5 Santos 16 8 3 5 22 19 3 27 6 Chivas 16 6 7 3 25 16 9 25 7 Morelia 16 7 4 5 23 23 0 25 8 CruzAzul 16 5 7 4 25 21 4 22 9 Tigres 16 5 6 5 26 19 7 21 10 Pumas 16 5 6 5 22 23 -1 21 11 Toluca 16 4 7 5 18 20 -2 19 12 ClubQueretaro 16 5 4 7 20 23 -3 19 13 Puebla 16 4 7 5 18 25 -7 19 14 ClubTijuana 16 3 8 5 17 26 -9 17 15 Dorados 16 4 2 10 18 31 -13 14 16 Veracruz 16 2 8 6 17 32 -15 14 17 Atlas 16 3 4 9 18 26 -8 13 18 ChiapasFC 16 3 3 10 15 31 -16 12
using a sed command.
I have parts of commands as follows:
#!/bin/sh
# Check for arguments if [ $# -eq 0 ]; then echo "Usage: $(basename $0) filename" exit 1 fi
if [ ! -f $1 ]; then echo "File "$1" doesn't exist!" exit 0 fi
awk '
NR == 1 { printf "%2s %-14s %3s %3s %3s %3s %3s %3s %3s %3s \n", "Pos", "Equipo", "JJ", "JG", "JE", "JP", "GF", "GC" , "DIF", "PTS" }
NR >= 2 { printf "%2d %-14s %3d %3d %3d %3d %3d %3d %3d %3d \n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10 '\n' }' $1
but it just prints the first line and that is it because it treats the data as a single line. If that is possible otherwise I will have to do it manually.
Best regards,
Antonio
If you manage that the club names are always single fields of a reasonable length, then
awk '{ for (i = 1; i <= NF; i++) if (i % 10) printf "%s\t", $i; else printf "%s\n", $i }' $yourinputfile
does what you want.
Alexander
--
It is getting close but some formatting is messing it up I tried
$ awk 'ORS=NR%10?" ":"\n"' $filename
it looked like it was going to work, but then in the first line, the PTS and the 1 got tangled up. Thank you for your insight it is close. I might need to use tr -d '\n' filename and pipe this and it could work.
Best Regards,
Antonio
____________________________________________________________ FREE ONLINE PHOTOSHARING - Share your photos online with your friends and family! Visit http://www.inbox.com/photosharing to find out more!
-----Original Message----- From: wingators@inbox.com Sent: Mon, 9 May 2016 11:39:56 -0800 To: users@lists.fedoraproject.org Subject: Re: using awk for selective printing, and adding a new line
-----Original Message----- From: ad+lists@uni-x.org Sent: Mon, 9 May 2016 20:47:49 +0200 To: users@lists.fedoraproject.org Subject: Re: using awk for selective printing, and adding a new line
Am 09.05.2016 um 18:24 schrieb Antonio Olivares:
Dear folks,
I have found numerous guides using awk to format stats. I can get stats from a website, but when I paste them they get pasted one per line, I can get them to one line using awk '{printf("%s ",$0)}' and the filename here, but what I want to do is to get the first 11 records and print out a new line "\n", then get the next 11 record and get new line "\n"
I get the data from mediotiempo.com,
data:
Pos. Equipo JJ JG JE JP GF GC DIF PTS 1 Monterrey 17 12 1 4 38 23 15 37 2 Pachuca 17 8 6 3 31 16 15 30 3 León 17 9 3 5 29 19 10 30 4 América 17 8 5 4 34 22 12 29 5 Chivas 17 7 7 3 26 16 10 28 6 Morelia 17 8 4 5 25 24 1 28 7 Santos 17 8 3 6 22 20 2 27 8 Tigres 17 6 6 5 29 19 10 24 9 Cruz Azul 17 5 7 5 25 24 1 22 10 Pumas 17 5 7 5 23 24 -1 22 11 Toluca 17 5 7 5 20 21 -1 22 12 Puebla 17 5 7 5 21 26 -5 22 13 Club Querétaro 17 5 4 8 21 26 -5 19 14 Club Tijuana 17 3 9 5 17 26 -9 18 15 Atlas 17 3 5 9 18 26 -8 14 16 Dorados 17 4 2 11 18 32 -14 14 17 Veracruz 17 2 8 7 18 34 -16 14 18 Chiapas FC 17 3 3 11 16 33 -17 12
to
Pos Equipo JJ JG JE JP GF GC DIF PTS 1 Monterrey 16 12 1 3 37 21 16 37 2 America 16 8 4 4 33 21 12 28 3 Pachuca 16 7 6 3 29 15 14 27 4 Leon 16 8 3 5 28 19 9 27 5 Santos 16 8 3 5 22 19 3 27 6 Chivas 16 6 7 3 25 16 9 25 7 Morelia 16 7 4 5 23 23 0 25 8 CruzAzul 16 5 7 4 25 21 4 22 9 Tigres 16 5 6 5 26 19 7 21 10 Pumas 16 5 6 5 22 23 -1 21 11 Toluca 16 4 7 5 18 20 -2 19 12 ClubQueretaro 16 5 4 7 20 23 -3 19 13 Puebla 16 4 7 5 18 25 -7 19 14 ClubTijuana 16 3 8 5 17 26 -9 17 15 Dorados 16 4 2 10 18 31 -13 14 16 Veracruz 16 2 8 6 17 32 -15 14 17 Atlas 16 3 4 9 18 26 -8 13 18 ChiapasFC 16 3 3 10 15 31 -16 12
using a sed command.
I have parts of commands as follows:
#!/bin/sh
# Check for arguments if [ $# -eq 0 ]; then echo "Usage: $(basename $0) filename" exit 1 fi
if [ ! -f $1 ]; then echo "File "$1" doesn't exist!" exit 0 fi
awk '
NR == 1 { printf "%2s %-14s %3s %3s %3s %3s %3s %3s %3s %3s \n", "Pos", "Equipo", "JJ", "JG", "JE", "JP", "GF", "GC" , "DIF", "PTS" }
NR >= 2 { printf "%2d %-14s %3d %3d %3d %3d %3d %3d %3d %3d \n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10 '\n' }' $1
but it just prints the first line and that is it because it treats the data as a single line. If that is possible otherwise I will have to do it manually.
Best regards,
Antonio
If you manage that the club names are always single fields of a reasonable length, then
awk '{ for (i = 1; i <= NF; i++) if (i % 10) printf "%s\t", $i; else printf "%s\n", $i }' $yourinputfile
does what you want.
Alexander
--
It is getting close but some formatting is messing it up I tried
$ awk 'ORS=NR%10?" ":"\n"' $filename
it looked like it was going to work, but then in the first line, the PTS and the 1 got tangled up. Thank you for your insight it is close. I might need to use tr -d '\n' filename and pipe this and it could work.
Best Regards,
Antonio
awk '{ for (i = 1; i <= NF; i++) if (i % 10) printf "%s\t", $i; else printf "%s\n", $i }'
worked :)
Dear folks,
I saw a mistake. The command worked, I saw that the names were split into two and that messed things up. By fixing the names into one, the command works. Thank you very much for your help.
Best Regards,
Antonio
____________________________________________________________ Can't remember your password? Do you need a strong and secure password? Use Password manager! It stores your passwords & protects your account. Check it out at http://mysecurelogon.com/manager
On Mon, May 09, 2016 at 11:50:38AM -0800, Antonio Olivares wrote:
From: ad+lists@uni-x.org Sent: Mon, 9 May 2016 20:47:49 +0200 To: users@lists.fedoraproject.org Subject: Re: using awk for selective printing, and adding a new line
Am 09.05.2016 um 18:24 schrieb Antonio Olivares:
Dear folks,
I have found numerous guides using awk to format stats. I can get stats from a website, but when I paste them they get pasted one per line,
<snip>
awk '
NR == 1 { printf "%2s %-14s %3s %3s %3s %3s %3s %3s %3s %3s \n", "Pos", "Equipo", "JJ", "JG", "JE", "JP", "GF", "GC" , "DIF", "PTS" }
NR >= 2 { printf "%2d %-14s %3d %3d %3d %3d %3d %3d %3d %3d \n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10 '\n' }' $1
but it just prints the first line and that is it because it treats the data as a single line. If that is possible otherwise I will have to do it manually.
Best regards,
Antonio
If you manage that the club names are always single fields of a reasonable length, then
awk '{ for (i = 1; i <= NF; i++) if (i % 10) printf "%s\t", $i; else printf "%s\n", $i }' $yourinputfile
does what you want.
It is getting close but some formatting is messing it up I tried
$ awk 'ORS=NR%10?" ":"\n"' $filename
it looked like it was going to work, but then in the first line, the PTS and the 1 got tangled up. Thank you for your insight it is close. I might need to use tr -d '\n' filename and pipe this and it could work.
Best Regards,
Antonio
awk '{ for (i = 1; i <= NF; i++) if (i % 10) printf "%s\t", $i; else printf "%s\n", $i }'
worked :)
Dear folks,
I saw a mistake. The command worked, I saw that the names were split into two and that messed things up. By fixing the names into one, the command works. Thank you very much for your help.
Best Regards,
If you leave the data as one field per line you can avoid squishing the team names and not depend on tabs for alignment.
awk ' BEGIN { f[1] = 4; f[2] = -14 f[3] = f[4] = f[5] = f[6] = f[7] = f[8] = f[9] = f[10] = 3 } { printf ("%*s%c", f[NR%10], $0, NR%10 ? " " : "\n") } ' <data>