Damian Weber wrote:
On Sat, 2 Oct 2010, Miroslav Lachman wrote:
Date: Sat, 02 Oct 2010 21:58:27 +0200
From: Miroslav Lachman<000.f...@quip.cz>
To: freebsd-stable<freebsd-stable@freebsd.org>
Subject: is there a bug in AWK on 6.x and 7.x (fixed in 8.x)?
I think there is a bug in AWK in base of FreeBSD 6.x and 7.x (tested on 6.4
i386 and 7.3 i386)
I have this simple test case, where I want 2 columns from GeoIP CSV file:
awk 'FS="," { print $1"-"$2 }' GeoIPCountryWhois.csv
It should produce output like this:
# awk 'FS="," { print $1"-"$2 }' GeoIPCountryWhois.csv | head -n 5
"1.0.0.0"-"1.7.255.255"
"1.9.0.0"-"1.9.255.255"
"1.10.10.0"-"1.10.10.255"
"1.11.0.0"-"1.11.255.255"
"1.12.0.0"-"1.15.255.255"
(above is taken from FreeBSD 8.1 i386)
On FreeBSD 6.4 and 7.3 it results in broken first line:
awk 'FS="," { print $1"-"$2 }' GeoIPCountryWhois.csv | head -n 5
"1.0.0.0","1.7.255.255","16777216","17301503","AU","Australia"-
"1.9.0.0"-"1.9.255.255"
"1.10.10.0"-"1.10.10.255"
"1.11.0.0"-"1.11.255.255"
"1.12.0.0"-"1.15.255.255"
Are you sure the command above contains a valid variable assignment?
I am not AWK expert, so maybe you are right. I just found this
difference between 7.x and 8.x.
But if if works for other lines, why it doesn't work fot the first line too?
Anyway, thank you for working examples, I will use them!
Another working example from 6.4 is:
awk -F "," '{ print $1"-"$2 }' GeoIPCountryWhois.csv | head -n 5
"1.0.0.0"-"1.7.255.255"
"1.9.0.0"-"1.9.255.255"
"1.10.10.0"-"1.10.10.255"
"1.11.0.0"-"1.11.255.255"
"1.12.0.0"-"1.15.255.255"
The following works on both 7.3-STABLE and 8.1-STABLE
$ awk -v FS="," '{ print $1"-"$2; }' GeoIPCountryWhois.csv | head -n 5
"1.0.0.0"-"1.7.255.255"
"1.9.0.0"-"1.9.255.255"
"1.10.10.0"-"1.10.10.255"
"1.11.0.0"-"1.11.255.255"
"1.12.0.0"-"1.15.255.255"
The following works as well
$ awk '{ print $1"-"$2; }' FS="," GeoIPCountryWhois.csv | head -n 5
"1.0.0.0"-"1.7.255.255"
"1.9.0.0"-"1.9.255.255"
"1.10.10.0"-"1.10.10.255"
"1.11.0.0"-"1.11.255.255"
"1.12.0.0"-"1.15.255.255"
Or, using a BEGIN section for assignment...
$ awk 'BEGIN {FS=","} { print $1"-"$2 }' GeoIPCountryWhois.csv | head -n 5
"1.0.0.0"-"1.7.255.255"
"1.9.0.0"-"1.9.255.255"
"1.10.10.0"-"1.10.10.255"
"1.11.0.0"-"1.11.255.255"
"1.12.0.0"-"1.15.255.255"
As a side note, gawk shows the following output on 7-STABLE and 8-STABLE
$ gawk 'FS="," { print $1"-"$2 }' GeoIPCountryWhois.csv | head -n 5
"1.0.0.0","1.7.255.255","16777216","17301503","AU","Australia"-
"1.9.0.0"-"1.9.255.255"
"1.10.10.0"-"1.10.10.255"
"1.11.0.0"-"1.11.255.255"
"1.12.0.0"-"1.15.255.255"
... which means the new behaviour of awk on 8-STABLE seems to break
compatibility with gawk at that point.
-- Damian
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"