ok, i've got a question...
Don Bolton
lugnut at sequent.UUCP
Fri Sep 28 08:05:49 AEST 1990
In article <1990Sep27.170227.5257 at athena.mit.edu> jik at athena.mit.edu (Jonathan I. Kamens) writes:
>In article <42947 at sequent.UUCP>, lugnut at sequent.UUCP (Don Bolton) writes:
>|> awk -f filebelow <oldlist >newlist
>|>
>|> { for (i = 1; i <= NF; i = i + 1)
>|> { if (i >= NF)
>|> printf("%s",$i)
>|> else
>|> printf("%s ", $i)
>|> }
>|> printf("\n")
>|> }
>|>
>|> course I assume the "null" characters are just blanks here
>
> First of all, the assumption that the nulls are supposed to represent blanks
>in the text is faulty, and is (as far as I can tell) in no way a valid
>assumption given the data that was provided by the original poster.
>Furthermore, there is no reason to make that assumption, since other posters
>have posted solutions which do not.
>
This is true, alas, I work with RDBMS products such as Oracle and Informix
and am used to seeing nulls represented as blank spaces.
> Note that the original poster did not say that he wanted to replace the
>nulls with spaces (which is what your solution does), he said that he wanted
>to remove them altogether.
>
Actualy what my program does do is strip out multiple blanks and replaces
them with one blank space.
> Second, as Larry Wall already pointed out, your solution will coredump on a
>lot of systems.
>
This is not a point I would have considered, as it runs fine on my machine
and is really merely a modified example from the awk programming language
book I have.
> Third, your solution deletes extra space between words. If I have a line
>which appears as "foo bar" in the input, it will appear as "foo bar"
>in the output.
>
Which was my intent. (I did do *something* right) :-)
> Fifth, the awk on my system (4.3BSD) loses anything on the line after the
>first null. Therefore, "foo^@^@^@bar" turns into "foo". Presumably, your
>version doesn't do this, else you wouldn't have posted your solution, so you
>have portability concerns. There are still other versions of awk (e.g. GNU
>awk) that keep nulls intact.
>
Don't know bout this one....
> Sixth, the awk code you posted is suboptimal in at least three different
>ways. For example, if you look runs from 1 to NF, how can i ever be greater
>than NF inside the body of the loop? Here's a piece of code that does the
>same thing (although, like I've said, I don't think it's the right thing to
>do):
>
i cannot be greater than NF, this bozo hosehead here tried to use an
assignment operand as an equality operator, in a fit of "what the fu**",
I tossed in the > and bingo it ran.
16 months ago I was a telemonkey (read telemarketer) with <NULL programming
experience. Because of the application generators associated with the RDBMS
packages I found RDBMS programming to be easy and a LOT more enjoyable than
dialing for dollars. I'm still bumping my way through shell programming,
though not an expert, I can do whatever I need to with it. awk is something
I just recently started playing with and the program you saw was my first
forray beyond {print "some text", $1} useage..
I'll learn, thanks for the pointers..
> {
> for (i = 1; i < NF; i++)
> printf("%s ", $i)
> printf("%s\n", $NF)
> }
>
>--
>Jonathan Kamens USnail:
>MIT Project Athena 11 Ashford Terrace
>jik at Athena.MIT.EDU Allston, MA 02134
>Office: 617-253-8495 Home: 617-782-0710
Half lug, half nut
More information about the Comp.unix.shell
mailing list