Rich Shepard wrote:
> On Mon, 21 Feb 2011, Rich Shepard wrote:
>
>    
>>    In English, I want to locate one or more digits followed by a comma and
>> one or more digits, then replace only the comma with a pipe.  What I've
>> tried include:
>>      s/.*[0-9],[[0-9]/\&|/g
>>      
>     More searching with Google lead me to this:
>
> "The section explains how to do the apparently complex task of moving text
> around within lines. Consider, for example, the output of ls: say you want
> to automatically strip out only the size column-- sed can do this sort of
> editing if you use the special \( \) notation to group parts of the regular
> expression together. Consider the following example:
>
>
>       sed -e 's/\(<[^ ]*>\)\([ ]*\)\(<[^ ]*>\)/\3\2\1/g'
>
> "Here sed is searching for the expression \<.*\>[ ]*\<.*\>. From the chapter
> on regular expressions, we can see that it matches a whole word, an
> arbitrary amount of whitespace, and then another whole word. The \( \)
> groups these three so that they can be referred to in<replace-text>. Each
> part of the regular expression inside \( \) is called a subexpression of the
> regular expression. Each subexpression is numbered--namely, \1, \2, etc.
> Hence, \1 in<replace-text>  is the first \<[^ ]*\>, \2 is [ ]*, and \3 is
> the second \<[^ ]*\>."
>
>     So, I tried
>
>       s/\(.*[0-9]\),\([0-9]\)/\1|\2/g
>
> but nothing was changed. Perhaps closer, but still not there.
>
> Rich
>
> _______________________________________________
> PLUG mailing list
> [email protected]
> http://lists.pdxlinux.org/mailman/listinfo/plug
>
>    
Rich,

# sed -e 's/\(<[^ ]*>\)\([ ]*\)\(<[^ ]*>\)/\3\2\1/g' < 
<filename.with.commas> > <another.filename>

sed is a stream editor.  You need to create a stream.  '<' is input 
file. '>' is the output file.

Ken


_______________________________________________
PLUG mailing list
[email protected]
http://lists.pdxlinux.org/mailman/listinfo/plug

Reply via email to