Discussion:
sed "Hello, world!" program?
d***@ehdp.com
2014-02-18 21:09:33 UTC
Permalink
Most programming languages have a "Hello, world!" example. Some might debate if sed is a "real" programming language. But sed at least resembles a programming language in many ways. Anyway, assuming sed is a programming language, what might be sed "Hello, world!" program?

I think the criteria are: **** Prints "Hello, world!". *** Is one of the simplest programs in the language (opposite of an obfuscation contest). *** Can be useful to demonstrate the language.

http://en.wikipedia.org/wiki/List_of_Hello_world_program_examples http://en.wikipedia.org/wiki/List_of_Hello_world_program_examples shows "Hello, world!" programs for various languages...

Perhaps this is a silly post. Or maybe it might interest someone, or make us think more about how sed works. I don't offer any suggestions at this point, am thinking about an answer.

Daniel
Tim Chase
2014-02-18 21:50:24 UTC
Permalink
Post by d***@ehdp.com
Most programming languages have a "Hello, world!" example. Some
might debate if sed is a "real" programming language. But sed at
least resembles a programming language in many ways. Anyway,
assuming sed is a programming language, what might be sed "Hello,
world!" program?
Well, you can pull of a UUOC¹ using sed as a noop

echo 'Hello, World!' | sed '$q'

or you can transform input into your desired string:

echo | sed 's/.*/Hello, world!/;q'

or you can transform every input line into your desired string

echo | sed 's/.*/Hello, world!/'
Post by d***@ehdp.com
Prints "Hello, world!".
Is one of the simplest programs in the language
Can be useful to demonstrate the language.
I think the 3rd one is the closest to meeting those criteria.
Post by d***@ehdp.com
Perhaps this is a silly post. Or maybe it might interest someone,
or make us think more about how sed works.
Since sed is more often used as a filter than as a stand-alone
language, it feels a little awkward to coerce it into acting like a
stand-alone language. That said, it doesn't stop people from doing
crazy things with sed like Tetris², Conway's game of life³, or a
Sudoku solver⁎.

-tkc


¹ http://www.catb.org/jargon/html/U/UUOC.html
² http://uuner.doslash.org/forfun/
³ http://permalink.gmane.org/gmane.editors.sed.user/3770
⁎ http://www.edwardrosten.com/code/sed/sedoku.sed
d***@ehdp.com
2014-02-21 18:47:01 UTC
Permalink
Thanks for the reply. I don't see a huge burst of interest from other group members. :)


Anyway, taking into account your suggestions, and after a little thought, I would like to suggest the following as candidate for "official" :) sed "Hello, World!":


sed --version | sed 's/.*/Hello, world!/; q'



This "Hello, world!" has the following advantages:
1) Like sed, it is unique. No other language has a "Hello, World!" even vaguely similar.
2) Like sed, it is relatively simple and short, one line.
3) It points out a unique attribute of the sed "language", that it MUST have input.
4) It does not rely on "echo" or other non-sed command (that may not be present). It makes it's own input, whatever text --version happens to produce. Maybe some sed versions may not have --version option? But it is a standard command line option, so I think it is fine for this purpose.
5) It does a good job demonstrating sed: It uses the key s command. And it shows how to write a simple program to quit after processing the first line.
6) It shows the script needs to be quoted if there is an included blank.
 
I take it some sed versions do not support semicolon. So I would suggest also having an alternate form:


sed --version | sed -e 's/.*/Hello, world!/' -e 'q'



Advantages of the alternate "Hello, world!" are that it shows how multiple scripts can be combined into one script, and it shows the use of a sed command line option that might be used in real operation.


Anyway, if I don't hear back after a week or so, I will try adding to wikipedia.


Daniel
Paolo Bonzini
2014-02-21 21:18:50 UTC
Permalink
Post by d***@ehdp.com
4) It does not rely on "echo" or other non-sed command (that may not be
present). It makes it's own input, whatever text --version happens to
produce. Maybe some sed versions may not have --version option? But it
is a standard command line option, so I think it is fine for this purpose.
What if some sed versions have a --version that writes to stderr rather
than stdout? In fact it is not a standard option, and an unrecognized
option would write a message to stderr, not stdout. So you need a 2>&1.

Paolo
Tim Chase
2014-02-21 22:30:51 UTC
Permalink
Post by Paolo Bonzini
What if some sed versions have a --version that writes to stderr
rather than stdout? In fact it is not a standard option, and an
unrecognized option would write a message to stderr, not stdout.
So you need a 2>&1.
which doesn't work under cmd.exe :-)

whereas just about every shell, whether command.com, cmd.exe, bash,
sh, tcsh, csh, zsh, dash, etc... they all support echo, so I
opted to go cross-platform. :-)

-tkc
Petr Lázňovský
2014-02-21 22:38:47 UTC
Permalink
Post by Tim Chase
Post by Paolo Bonzini
What if some sed versions have a --version that writes to stderr
rather than stdout? In fact it is not a standard option, and an
unrecognized option would write a message to stderr, not stdout.
So you need a 2>
which doesn't work under cmd.exe :-)
whereas just about every shell, whether command.com, cmd.exe, bash,
sh, tcsh, csh, zsh, dash, etc... they all support echo, so I
opted to go cross-platform. :-)
-tkc
Why do you think the stream redirection 2>&1 does not work under cmd.exe?

L.
Tim Chase
2014-02-21 22:50:58 UTC
Permalink
Post by Petr Lázňovský
Post by Tim Chase
Post by Paolo Bonzini
So you need a 2>
which doesn't work under cmd.exe :-)
Why do you think the stream redirection 2>&1 does not work under cmd.exe?
Testing?

==============================================
C:\Temp>type stde.py
import sys
sys.stdout.write("On stdout\n")
sys.stderr.write("On stderr\n")
print repr(sys.argv) # just to see what python sees

C:\Temp>python stde.py 2>&1 > ste.txt
On stderr

C:\Temp>
==============================================

I don't know if it's been improved since XP (the only Win32 box I
have at my ready).

-tkc
Evzen Polenka
2014-02-21 23:08:41 UTC
Permalink
Post by Tim Chase
C:\Temp>python stde.py 2>&1 > ste.txt
On stderr
C:\Temp>
==============================================
I don't know if it's been improved since XP (the only Win32 box I
have at my ready).
Try to "swap the redirections"... like this:
python stde.py > ste.txt 2>&1

See http://support.microsoft.com/kb/110930 - this has worked since
Windows NT.

--
Bye, Evzen
Rakesh Sharma
2014-02-22 06:52:07 UTC
Permalink
I see two issues with "hello, world" thingy that you have:

Not all seds support "--version" option. And as has been pointed out already, even when they do, they all might not dump the output of "--version" onto stdout. To take care of that you have to do redirection. But that depends on what shell you are in. The syntax 2>&1 doesn't work in tcsh.
The ! character will cause the construct to blow up in case the shell is tcsh/csh. (It error out complaining the event / not found.)


My suggestion is the following:
% yes | sed -e 's/.*/Hello, world\!/' -e 'q'


This takes makes it shell-agnostic (we backslash the !, so it satisfies both csh & bourne flavors)
The command "yes" dumps it output on stdout & so we no more rely on the "--version" option being present on the sed version.


Thanks,
Rakesh


To: sed-***@yahoogroups.com
From: ***@ehdp.com
Date: Fri, 21 Feb 2014 10:47:01 -0800
Subject: Re: sed "Hello, world!" program?



























Thanks for the reply. I don't see a huge burst of interest from other group members. :)


Anyway, taking into account your suggestions, and after a little thought, I would like to suggest the following as candidate for "official" :) sed "Hello, World!":



sed --version | sed 's/.*/Hello, world!/; q'





This "Hello, world!" has the following advantages:

1) Like sed, it is unique. No other language has a "Hello, World!" even vaguely similar.

2) Like sed, it is relatively simple and short, one line.

3) It points out a unique attribute of the sed "language", that it MUST have input.

4) It does not rely on "echo" or other non-sed command (that may not be present). It makes it's own input, whatever text --version happens to produce. Maybe some sed versions may not have --version option? But it is a standard command line option, so I think it is fine for this purpose.

5) It does a good job demonstrating sed: It uses the key s command. And it shows how to write a simple program to quit after processing the first line.

6) It shows the script needs to be quoted if there is an included blank.

 

I take it some sed versions do not support semicolon. So I would suggest also having an alternate form:



sed --version | sed -e 's/.*/Hello, world!/' -e 'q'





Advantages of the alternate "Hello, world!" are that it shows how multiple scripts can be combined into one script, and it shows the use of a sed command line option that might be used in real operation.


Anyway, if I don't hear back after a week or so, I will try adding to wikipedia.



Daniel
Tim Chase
2014-02-22 12:27:03 UTC
Permalink
Post by Rakesh Sharma
% yes | sed -e 's/.*/Hello, world\!/' -e 'q'
This takes makes it shell-agnostic
Again, command.com/cmd.exe doesn't have "yes" so I still prefer "echo"
which is available in every shell I have at my disposal (all *nix
shells, command.com, cmd.exe, and Power Shell). But the
shell-escaping is another layer of complexity. Using cmd.exe and
command.com expects double-quotes rather than single quotes (though
certain versions of sed might be smart enough to reparse the
arguments for single-quote escaping), so one might have to do use
single-quotes and then tell sed to use an escape sequence.

sed -e "s/.*/Hello, world\x21/" -e q

-tkc
Rakesh Sharma
2014-02-23 19:08:45 UTC
Permalink
the \x21 wont pass muster in most unixes. so cant use that at all.


To: ***@hotmail.com
CC: sed-***@yahoogroups.com
From: ***@thechases.com
Date: Sat, 22 Feb 2014 06:27:03 -0600
Subject: Re: sed "Hello, world!" program?
Post by Rakesh Sharma
% yes | sed -e 's/.*/Hello, world\!/' -e 'q'
This takes makes it shell-agnostic
Again, command.com/cmd.exe doesn't have "yes" so I still prefer "echo"

which is available in every shell I have at my disposal (all *nix

shells, command.com, cmd.exe, and Power Shell). But the

shell-escaping is another layer of complexity. Using cmd.exe and

command.com expects double-quotes rather than single quotes (though

certain versions of sed might be smart enough to reparse the

arguments for single-quote escaping), so one might have to do use

single-quotes and then tell sed to use an escape sequence.



sed -e "s/.*/Hello, world\x21/" -e q



-tkc
d***@ehdp.com
2014-02-24 01:52:26 UTC
Permalink
Thanks very much (Rakesh) for pointing the C shell behavior. I rarely if ever use C shell. But many others do. I would have guessed that single quoting an exclamation in C shell would make it a literal. But the designers of C shell were pretty smart folks, they must have had their reasons.

Your observation reinforces the point that sed can be somewhat subject to the "whims" of the shell that it runs within. Anyone who has spent much time with quoting a complex command line expression has seen that.

I don't think it is a good idea to consider using the "yes" command or '\!' or '\x21' for this kind of example. So here is an alternate suggestion for the sed "Hello, world!" example for group members to consider:

------------------------------
# convert input text stream to "Hello, world!"
s/.*/Hello, world!/
q
------------------------------

sed is really two things in one: 1) the command-line utility. 2) the simple scripting language that the sed utility reads. By separating out the script from the command line environment, this example is immune (I think) to command line oddities like the C shell behavior and differences in sed versions.

So is this the best "Hello, world!" example? Or is there some other defect lurking, or some better way?

Thanks,
Daniel
Tim Chase
2014-02-24 02:29:20 UTC
Permalink
Post by d***@ehdp.com
So here is an alternate suggestion for the sed "Hello, world!"
------------------------------
# convert input text stream to "Hello, world!"
s/.*/Hello, world!/
q
------------------------------
sed is really two things in one: 1) the command-line utility. 2)
the simple scripting language that the sed utility reads. By
separating out the script from the command line environment, this
example is immune (I think) to command line oddities like the C
shell behavior and differences in sed versions.
So is this the best "Hello, world!" example? Or is there some other
defect lurking, or some better way?
I think this is my favorite so far. It should be cross-platform with
the following benefits:

- no trouble escaping the "!"

- no trouble with single-vs-double quotes

- no need for a specific external utility (though "echo" still has
fairly broad support) as long as you have *something* that produces
output on stdout, including any arbitrary text file

- no dependency on redirecting-stderr notation

- demonstrates that sed scripts can be external files, not just the
command command-line usage

- demonstrates use of the archetypal s/// command

So I'm +1 on this.

-tkc
z***@arcor.de
2014-02-24 08:41:15 UTC
Permalink
s/.*/Hello, world!/
q
At first let me state that I'm not technically involved in the usage of sed nor do I really understand its syntax programmatically. But I'm a really advanced user in cmd.exe and batch file "programming".

Testing the suggested command line syntax on win7 and win8 environment using cmd.exe leads to an ..."unterminated 's' command" caused by a space at RRE and missing doublequotes.
Based on the suggested syntax this is the one working for me:
sed "s/.*/Hello, world!/;q"

Or without quoting (removing spaces): sed s/.*/Hello,World!/;q

...just a throw-in of a simple user of sed
Zharif
Tim Chase
2014-02-24 15:40:14 UTC
Permalink
Post by Tim Chase
s/.*/Hello, world!/
q
Testing the suggested command line syntax on win7 and win8
environment using cmd.exe leads to an ..."unterminated 's' command"
caused by a space at RRE and missing doublequotes. Based on the
suggested syntax this is the one working for me: sed "s/.*/Hello,
world!/;q"
Or without quoting (removing spaces): sed s/.*/Hello,World!/;q
Are you trying to put them on the command-line, or are you putting
those two lines in a file and then invoking sed on it (the method
discussed in this sub-thread)?

c:\temp> copy con hello.sed
s/.*/Hello, world!/
q
^Z

c:\temp> sed -f hello.sed < somefile_with_at_least_one_line.txt
Hello, world!

c:\temp>

-tkc
d***@ehdp.com
2014-02-24 18:06:30 UTC
Permalink
Zharif,


------------------
s/.*/Hello, world!/
q
------------------


shows sed script in a file, called with sed -f option, as Tim pointed out. The script can go on the command line, in the ways that you listed. Anyway, the command line script doesn't work well for the special "Hello, world!" example, mainly because C shell interprets the exclamation character on the command line, as Rakesh pointed out.


/////////////////


Related to sed ...<<<"hello world" proposal from Thierry - I think inconsistencies between different environments will occur, so it will not work. For example, just trying a few (not even looking at cmd.exe):


---------------------------------
bash$ sed "" <<< "Hello, world!"
-bash: !": event not found
bash$ sed "" <<< 'Hello, world!'
Hello, world!
csh% sed "" <<< 'Hello, world!'
Missing name for redirect.
---------------------------------


Even if sed ...<<<"hello world" worked perfectly everywhere, I don't think it would be a good "Hello, world!" example. It says nothing about sed, is really a statement about the shell, since you could substitute cat
for sed and have the same effect. A good "Hello, world!" example has to show something about the language.


Any more thoughts? If I don't hear back in a week or so, I will try putting into the wikipedia list:


------------------------------
# convert input text stream to "Hello, world!"
s/.*/Hello, world!/
q
------------------------------


Daniel
Zharif
2014-02-24 19:58:28 UTC
Permalink
Sorry for intruding this thread by my inattention.
Inside a script file the suggested command works as expected.

sedscript.txt:
s/.*/Hello, world!/
q

Command: sed -f sedscript.txt
Redirecting to file: sed -f sedscript.txt > testfile.txt
Post by d***@ehdp.com
Zharif,
------------------
s/.*/Hello, world!/
q
------------------
shows sed script in a file, called with sed -f option, as Tim pointed
out. The script can go on the command line, in the ways that you
listed. Anyway, the command line script doesn't work well for
the special "Hello, world!" example, mainly because C shell interprets
the exclamation character on the command line, as Rakesh pointed out.
/////////////////
Related to sed ...<<<"hello world" proposal from Thierry - I think
inconsistencies between different environments will occur, so it will
---------------------------------
bash$ sed "" <<< "Hello, world!"
-bash: !": event not found
bash$ sed "" <<< 'Hello, world!'
He llo, world!
csh% sed "" <<< 'Hello, world!'
Missing name for redirect.
---------------------------------
Even if sed ...<<<"hello world" worked perfectly everywhere, I don't
think it would be a good "Hello, world!" example. It says nothing
about sed, is really a statement about the shell, since you could
substitute cat
for sed and have the same effect. A good "Hello, world!" example has
to show something about the language.
Any more thoughts? If I don't hear back in a week or so, I will try
------------------------------
# convert input text stream to "Hello, world!"
s/.*/Hello, world!/
q
------------------------------Daniel
d***@ehdp.com
2014-03-07 20:49:44 UTC
Permalink
FWIW, I went ahead and added the "Hello, world!" example to the wikipedia sed article.

Daniel

Davide Brini
2014-02-21 23:19:04 UTC
Permalink
----- Original Message -----
From: Tim Chase
Sent: 02/21/14 11:50 PM
Subject: Re: sed "Hello, world!" program?
C:\Temp>python stde.py 2>&1 > ste.txt
On stderr
Redirections are executed in the order they appear on the command line. The above would equally "not work" under a UNIX shell. You need

python stde.py > ste.txt 2>&1
--
D.
d***@ehdp.com
2014-02-22 06:10:42 UTC
Permalink
That is a good point that --version could write to stderr, and would certainly if no valid --version option, so maybe 2>&1 needed. All the Linux commands seem to write --version to stdout, but there is no way to know (for me) to know about all other possible sed programs, or even which ones (if any) have --version option. I would pick stdout for --version output, because --version output is not any kind of error, it is exactly what the user wants. But someone else might pick different, there is apparently no "rule" about this.

Related to which have --version http://www.unix.com/man-page/FreeBSD/1/sed/ says freebsd sed does not support --version option period. Other freebsd utilities I checked (ls and cp) also do not support --version option. It seems they don't support any options in "long syntax" form. Apparently, ditto for open solaris sed, from the same man page lookup site. This is probably not news to many here. Maybe GNU sed is the only one with --version option?

To me, it would seem preferable NOT to use 2>&1 for "Hello, world!" example. 2>&1 seems rather obscure, certainly not simple, and has little or no connection with the intrinsic nature of sed (IMO). I do a lot of shell scripting, am very familiar with 2>&1, sometimes use it. But I think (really am sure) it would confuse and discourage beginning users, make sed look even more cryptic than it can sometimes be. There is even some disagreement about details of 2>&1 use on this group of relatively expert users. I was also not aware that 2>&1 works under cmd.exe environment, which I use a fair amount. It doesn't surprise me it works, makes sense it works, I just did not know that it did.

//////////////////////

Anyway, here's a suggestion for consideration. Maybe there could be two sed "Hello, world!" versions:

1) sed -e 's/.*/Hello, world!/' -e 'q' non­_empty_file (any sed)

2) sed --version | sed 's/.*/Hello, world!/; q' (GNU sed only)

Any thoughts about having these two versions? Some of the "Hello, world!" examples for other languages have more than one version, depending on some factor. So I don't think there would be a problem having two versions.

The advantages would be (condensed from previous post):

1) Unique. No other language has "Hello, world!" even vaguely similar.
2) Like sed (at its best), relatively simple and short one-liners.
3) Emphasizes a unique attribute of sed, that it MUST have input.
4) Does not rely on "echo" or other (possibly missing) non-sed command.
5) Highlights key s command, but also shows simple programming.
6) Shows that script needs to be quoted if an included blank.
7) Shows input stream can be from a file or from a pipe.
8) Shows both semicolon syntax and merging -e options.
9) Uses simple regular expression syntax, key to using sed.

BTW, a "Hello, world!" does not have to be perfect. Given the variety of sed versions, perfection is probably not attainable here. I'm mostly a C programmer, and C does whatever I want. But I still see discussions and disagreements about (admittedly minor) details of the C "Hello, world!" program.

Daniel
Thierry Blanc
2014-02-24 13:47:34 UTC
Permalink
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>







<body style="background-color: #fff;">
<span style="display:none">&nbsp;</span>

<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="position:relative;">
<div id="ygrp-msg" style="z-index: 1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->

<div id="ygrp-text" >


<p>

Agree.<br>
If echo I would rather go for<br>
sed ...&lt;&lt;&lt;&quot;hello world&quot;<br>
-- <br>
Sent from my FAIR phone with GMX Mail. Please excuse my brevity.<br><br><div class="gmail_quote">Tim Chase &lt;***@thechases.com&gt; wrote:<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204);">

On 2014-02-23 17:52, ***@ehdp.com wrote:<br>
&gt; So here is an alternate suggestion for the sed &quot;Hello, world!&quot;<br>
&gt; example for group members to consider:<br>
&gt;<br>
&gt; ------------------------------<br>
&gt; # convert input text stream to &quot;Hello, world!&quot;<br>
&gt; s/.*/Hello, world!/<br>
&gt; q<br>
&gt; ------------------------------<br>
&gt;<br>
&gt; sed is really two things in one: 1) the command-line utility. 2)<br>
&gt; the simple scripting language that the sed utility reads. By<br>
&gt; separating out the script from the command line environment, this<br>
&gt; example is immune (I think) to command line oddities like the C<br>
&gt; shell behavior and differences in sed versions.<br>
&gt;<br>
&gt; So is this the best &quot;Hello, world!&quot; example? Or is there some other<br>
&gt; defect lurking, or some better way?<br>
<br>
I think this is my favorite so far. It should be cross-platform with<br>
the following benefits:<br>
<br>
- no trouble escaping the &quot;!&quot;<br>
<br>
- no trouble with single-vs-double quotes<br>
<br>
- no need for a specific external utility (though &quot;echo&quot; still has<br>
fairly broad support) as long as you have *something* that produces<br>
output on stdout, including any arbitrary text file<br>
<br>
- no dependency on redirecting-stderr notation<br>
<br>
- demonstrates that sed scripts can be external files, not just the<br>
command command-line usage<br>
<br>
- demonstrates use of the archetypal s/// command<br>
<br>
So I&#39;m &#43;1 on this.<br>
<br>
-tkc<br>
<br>
<br>
<br>
<br>
<br>
------------------------------------<br>
<br>
--<br>
Yahoo Groups Links<br>
<br>
&lt;*&gt; To visit your group on the web, go to:<br>
<a href="http://groups.yahoo.com/group/sed-users/" target="_blank">http://groups.yahoo.com/group/sed-users/</a><br>
<br>
&lt;*&gt; Your email settings:<br>
Individual Email &#124; Traditional<br>
<br>
&lt;*&gt; To change settings online go to:<br>
<a href="http://groups.yahoo.com/group/sed-users/join" target="_blank">http://groups.yahoo.com/group/sed-users/join</a><br>
(Yahoo! ID required)<br>
<br>
&lt;*&gt; To change settings via email:<br>
sed-users-***@yahoogroups.com<br>
sed-users-***@yahoogroups.com<br>
<br>
&lt;*&gt; To unsubscribe from this group, send an email to:<br>
sed-users-***@yahoogroups.com<br>
<br>
&lt;*&gt; Your use of Yahoo Groups is subject to:<br>
<a href="http://info.yahoo.com/legal/us/yahoo/utos/terms/" target="_blank">http://info.yahoo.com/legal/us/yahoo/utos/terms/</a><br>
<br>
</blockquote></div>

</p>

</div>


<!--~-|**|PrettyHtmlStart|**|-~-->
<div style="color: #fff; height: 0;">__._,_.___</div>




<div style="clear:both"> </div>

<table cellspacing=4px style="margin-top: 20px; margin-bottom: 10px;">
<tbody>
<tr>
<td style="font-size: 12px; font-family: arial; font-weight: bold; padding: 7px 5px 5px; color: #FFF; background-color: #F2F2F2; border: 1px solid #EAEAEA " >
<a style="text-decoration: none; color: #2D50FD" href="http://groups.yahoo.com/group/sed-users/post;_ylc=X3oDMTJwMDE4cnFoBF9TAzk3MzU5NzE0BGdycElkAzI0ODk2MzkEZ3Jwc3BJZAMxNzA5MzM1MDAyBG1zZ0lkAzkzMzUEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMzkzMjQ5NjY2?act=reply&messageNum=9335">Reply via web post</a>
</td>
<td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px; color: #FFF; background-color: #F2F2F2; border: 1px solid #EAEAEA; " >
<a href="mailto:***@gmx.ch?subject=Re%3A%20Re%3A%20sed%20%22Hello%2C%20world%21%22%20program%3F" style="text-decoration: none; color: #2D50FD;">
Reply to sender </a>
</td>
<td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px; color: #FFF; background-color: #F2F2F2; border: 1px solid #EAEAEA; ">
<a href="mailto:sed-***@yahoogroups.com?subject=Re%3A%20Re%3A%20sed%20%22Hello%2C%20world%21%22%20program%3F" style="text-decoration: none; color: #2D50FD">
Reply to group </a>
</td>
<td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px; color: #FFF; background-color: #F2F2F2; border: 1px solid #EAEAEA; " >
<a href="http://groups.yahoo.com/group/sed-users/post;_ylc=X3oDMTJlM3V1cDhkBF9TAzk3MzU5NzE0BGdycElkAzI0ODk2MzkEZ3Jwc3BJZAMxNzA5MzM1MDAyBHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTM5MzI0OTY2Ng--" style="text-decoration: none; color: #2D50FD">Start a New Topic</a>
</td>
<td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px; color: #2D50FD; background-color: #F2F2F2; border: 1px solid #EAEAEA; " >
<a href="http://groups.yahoo.com/group/sed-users/message/9309;_ylc=X3oDMTM0N3I4M25wBF9TAzk3MzU5NzE0BGdycElkAzI0ODk2MzkEZ3Jwc3BJZAMxNzA5MzM1MDAyBG1zZ0lkAzkzMzUEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMzkzMjQ5NjY2BHRwY0lkAzkzMDk-" style="text-decoration: none; color: #2D50FD;">Messages in this topic</a>
(17)
</td>
</tr>
</tbody>
</table>


<!------- Start Nav Bar ------>


<div id="ygrp-grfd" style="font-family: Verdana; font-size: 12px; padding: 15px 0;">

<!-- |**|begin egp html banner|**| -->

-- <BR>

<!-- |**|end egp html banner|**| -->

</div>




<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vital" style="background-color: #f2f2f2; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">

<span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; "><a href="http://groups.yahoo.com/group/sed-users;_ylc=X3oDMTJlM3FkZ2JyBF9TAzk3MzU5NzE0BGdycElkAzI0ODk2MzkEZ3Jwc3BJZAMxNzA5MzM1MDAyBHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTM5MzI0OTY2Ng--" style="text-decoration: none;">Visit Your Group</a></span>

<ul style="list-style-type: none; margin: 0; padding: 0; display: inline;">
<li style="border-right: 1px solid #000; font-weight: 700; display: inline; padding: 0 5px; margin-left: 0;">
<span class="cat"><a href="http://groups.yahoo.com/group/sed-users/members;_ylc=X3oDMTJma245Y21vBF9TAzk3MzU5NzE0BGdycElkAzI0ODk2MzkEZ3Jwc3BJZAMxNzA5MzM1MDAyBHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzEzOTMyNDk2NjY-?o=6" style="text-decoration: none;">New Members</a></span>
<span class="ct" style="color: #ff7900;">1</span>
</li>
</ul>
</div>


<div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;">
<a href="http://groups.yahoo.com/;_ylc=X3oDMTJkMXBjMW9hBF9TAzk3NDc2NTkwBGdycElkAzI0ODk2MzkEZ3Jwc3BJZAMxNzA5MzM1MDAyBHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMzkzMjQ5NjY2" style="float: left;"><img src="Loading Image..." height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a>
<div style="color: #747575; float: right;"> &bull; <a href="http://info.yahoo.com/privacy/us/yahoo/groups/details.html" style="text-decoration: none;">Privacy</a> &bull; <a href="mailto:sed-users-***@yahoogroups.com?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> &bull; <a href="http://info.yahoo.com/legal/us/yahoo/utos/terms/" style="text-decoration: none;">Terms of Use</a> </div>
</div>

<!-- |**|end egp html banner|**| -->

</div> <!-- ygrp-msg -->


<!-- Sponsor -->
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-sponsor" style="width:160px; float:right; clear:none; margin:0 0 25px 0; background: #fff;">

<!-- Start Recommendations -->
<div id="ygrp-reco">
</div>
<!-- End Recommendations -->



</div> <!-- |**|end egp html banner|**| -->

<div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div>

<img src="http://geo.yahoo.com/serv?s=97359714/grpId=2489639/grpspId=1709335002/msgId=9335/stime=1393249666" width="1" height="1"> <br>

<div style="color: #fff; height: 0;">__,_._,___</div>
<!--~-|**|PrettyHtmlEnd|**|-~-->

</body>

<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
<style type="text/css">
<!--
#ygrp-mkp {
border: 1px solid #d8d8d8;
font-family: Arial;
margin: 10px 0;
padding: 0 10px;
}

#ygrp-mkp hr {
border: 1px solid #d8d8d8;
}

#ygrp-mkp #hd {
color: #628c2a;
font-size: 85%;
font-weight: 700;
line-height: 122%;
margin: 10px 0;
}

#ygrp-mkp #ads {
margin-bottom: 10px;
}

#ygrp-mkp .ad {
padding: 0 0;
}

#ygrp-mkp .ad p {
margin: 0;
}

#ygrp-mkp .ad a {
color: #0000ff;
text-decoration: none;
}
#ygrp-sponsor #ygrp-lc {
font-family: Arial;
}

#ygrp-sponsor #ygrp-lc #hd {
margin: 10px 0px;
font-weight: 700;
font-size: 78%;
line-height: 122%;
}

#ygrp-sponsor #ygrp-lc .ad {
margin-bottom: 10px;
padding: 0 0;
}

#actions {
font-family: Verdana;
font-size: 11px;
padding: 10px 0;
}

#activity {
background-color: #e0ecee;
float: left;
font-family: Verdana;
font-size: 10px;
padding: 10px;
}

#activity span {
font-weight: 700;
}

#activity span:first-child {
text-transform: uppercase;
}

#activity span a {
color: #5085b6;
text-decoration: none;
}

#activity span span {
color: #ff7900;
}

#activity span .underline {
text-decoration: underline;
}

.attach {
clear: both;
display: table;
font-family: Arial;
font-size: 12px;
padding: 10px 0;
width: 400px;
}

.attach div a {
text-decoration: none;
}

.attach img {
border: none;
padding-right: 5px;
}

.attach label {
display: block;
margin-bottom: 5px;
}

.attach label a {
text-decoration: none;
}

blockquote {
margin: 0 0 0 4px;
}

.bold {
font-family: Arial;
font-size: 13px;
font-weight: 700;
}

.bold a {
text-decoration: none;
}

dd.last p a {
font-family: Verdana;
font-weight: 700;
}

dd.last p span {
margin-right: 10px;
font-family: Verdana;
font-weight: 700;
}

dd.last p span.yshortcuts {
margin-right: 0;
}

div.attach-table div div a {
text-decoration: none;
}

div.attach-table {
width: 400px;
}

div.file-title a, div.file-title a:active, div.file-title a:hover, div.file-title a:visited {
text-decoration: none;
}

div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div.photo-title a:visited {
text-decoration: none;
}

div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
font-family: Verdana;
font-size: 10px;
font-weight: normal;
}

.green {
color: #628c2a;
}

.MsoNormal {
margin: 0 0 0 0;
}

o {
font-size: 0;
}

#photos div {
float: left;
width: 72px;
}

#photos div div {
border: 1px solid #666666;
height: 62px;
overflow: hidden;
width: 62px;
}

#photos div label {
color: #666666;
font-size: 10px;
overflow: hidden;
text-align: center;
white-space: nowrap;
width: 64px;
}

#reco-category {
font-size: 77%;
}

#reco-desc {
font-size: 77%;
}

.replbq {
margin: 4px;
}

#ygrp-actbar div a:first-child {
/* border-right: 0px solid #000;*/
margin-right: 2px;
padding-right: 5px;
}

#ygrp-mlmsg {
font-size: 13px;
font-family: Arial, helvetica,clean, sans-serif;
*font-size: small;
*font: x-small;
}

#ygrp-mlmsg table {
font-size: inherit;
font: 100%;
}

#ygrp-mlmsg select, input, textarea {
font: 99% Arial, Helvetica, clean, sans-serif;
}

#ygrp-mlmsg pre, code {
font:115% monospace;
*font-size:100%;
}

#ygrp-mlmsg * {
line-height: 1.22em;
}

#ygrp-mlmsg #logo {
padding-bottom: 10px;
}


#ygrp-msg p a {
font-family: Verdana;
}

#ygrp-msg p#attach-count span {
color: #1E66AE;
font-weight: 700;
}

#ygrp-reco #reco-head {
color: #ff7900;
font-weight: 700;
}

#ygrp-reco {
margin-bottom: 20px;
padding: 0px;
}

#ygrp-sponsor #ov li a {
font-size: 130%;
text-decoration: none;
}

#ygrp-sponsor #ov li {
font-size: 77%;
list-style-type: square;
padding: 6px 0;
}

#ygrp-sponsor #ov ul {
margin: 0;
padding: 0 0 0 8px;
}

#ygrp-text {
font-family: Georgia;
}

#ygrp-text p {
margin: 0 0 1em 0;
}

#ygrp-text tt {
font-size: 120%;
}

#ygrp-vital ul li:last-child {
border-right: none !important;
}
-->
</style>
</head>

<!--~-|**|PrettyHtmlEnd|**|-~-->
</html>
<!-- end group email -->
Loading...