Hacker News new | ask | show | jobs
by prototype56 5403 days ago
Now use the same sytax to query yahoo weather. Get the point?
2 comments

I don't really get the point. Unix has been fantastic at scraping and munging text for decades.

  curl http://weather.yahoo.com/united-states/california/san-jose-2488042/ | sed '/Current conditions/s/.*id="yw-temp">\([0-9]\+\).*/\1/'
It may be fragile, but any method of extracting data out of HTML is going to be fragile when the provider changes design or layout.

A tiny bit of knowledge of grep, sed, and awk, and other simple unix text utilities such as join, comm, cut, paste, goes a long long way.

The example happens to use "munging" text, but I think the GP is trying to make the point that you can't use sed (effectively) to parse, for instance, a collection of database entries from an SQL server in the same way that LINQ would be able to do so.

The tl;dr I got from the article was LINQ is effective at working with sets of data; not just sets of text data from a text file.

True, although Plan9 pushed that part of the Unix philosophy even further, towards where it arguably handles some of those more general cases as well, with "structural regexes" that work on things other than collections of lines: http://doc.cat-v.org/bell_labs/structural_regexps/
Isn't the general consensus that regexes are hard to maintain and debug? I'm not sure that "structural regexes" are solving the right problem.

I think maybe we're not shooting at the same baskets though (basketball reference, apologies if you're not from US); I'm trying to write software applications, not shell scripts.

For illustration (probably wrong again):

    curl 'http://weather.yahooapis.com/forecastrss?w=615702&u=c' | \
        xmlstarlet sel -N 'y=http://xml.weather.yahoo.com/ns/rss/1.0' \
              -t -m '//y:forecast' -v '@text'
edit: corrected xml line
I'm sorry, but you're still missing the point. The point is that the syntax with LINQ is actually the same. Saying you have a program to do X in bash is the equivalent to saying you've got a library to do X in C# or Java.

LINQ, on the other hand, can work with arbitrary runtime objects and arbitrary backend implementations. Haskell's still cooler, though.