[ale] vim search/replace syntax request
Byron Jeff
byronjeff at mail.clayton.edu
Thu Mar 10 11:13:14 EST 2011
On Thu, Mar 10, 2011 at 10:36:26AM -0500, Dow Hurst wrote:
> In vim what you sent translates to my needs as listed below and works like a charm!
Cool Beans...
> Thanks for the information!
No problem. Glad to help.
BAJ
>
> :6,14 s/^\(.\{84\}\)1\(.*\)$/\10\2/
>
> Best wishes,
> Dow
> ________________________________________________
> Dow Hurst, Research Scientist
> 340 Sullivan Science Bldg., Dept. of Chem. and Biochem.
> University of North Carolina at Greensboro
> PO Box 26170 Greensboro, NC 27402-6170
>
>
>
>
> On Thu, Mar 10, 2011 at 7:28 AM, Byron Jeff <byronjeff at mail.clayton.edu<mailto:byronjeff at mail.clayton.edu>> wrote:
> On Thu, Mar 10, 2011 at 02:04:15AM -0500, Dow Hurst wrote:
>
> > I'd like to construct a vim based search and replace statement. I want
> > to search between a set of line numbers for the 85th character on a line
> > and if it contains a "1" then turn it into a "0". I just don't know how
> > to set up that particular search pattern and replace pattern.
>
> The following should work in vim. Not sure about raw vi:
>
> :%s/^\(.\{84\}\)1\(.*\)$/\10\2/
>
> Here is an expanded version with some backslashes eliminated for explanation:
>
> :%s/^ ( .{84} ) 1 ( .* ) $ / \1 0 \2 /
>
> The :%s/^ is the standard substitute all lines and mark the beginning of the line.
>
> The parens in the expression are grouping operators. Needs backslashes to
> mark as special operators. Each group captures and saves the match so that
> it can be reinserted in the substitution. The groups are numbered starting
> with 1.
>
> So the first group captures .{84} which matches exactly 84 charaters.
>
> The 1 matches the 1 in the 85th column.
>
> The .* is the second group which captures the rest of the line after the
> 85th character. Probably could get away without it (*). The $ is the end of the
> line.
>
> Once a line is matched then the substitution is pretty simple:
>
> The \1 is the first group which is the first 84 characters.
> the 0 substitutes for the 1.
> the \2 is the group for the rest of the line.
>
> (*) This should also work:
>
> :%s/^\(.\{84\}\)1/\10/
>
> Good Luck.
>
> BAJ
>
> >
> > It's been a long time since I've posted to the list. It is nice to see the ALE group is flourishing. I miss going to the meetings...
> >
> > Best wishes,
> > Dow
> > ________________________________________________
> > Dow Hurst, Research Scientist
> > 340 Sullivan Science Bldg., Dept. of Chem. and Biochem.
> > University of North Carolina at Greensboro
> > PO Box 26170 Greensboro, NC 27402-6170
> >
> >
>
> Content-Description: ATT00001..txt
> > _______________________________________________
> > Ale mailing list
> > Ale at ale.org<mailto:Ale at ale.org>
> > http://mail.ale.org/mailman/listinfo/ale
> > See JOBS, ANNOUNCE and SCHOOLS lists at
> > http://mail.ale.org/mailman/listinfo
>
>
> --
> Byron A. Jeff
> Department Chair: IT/CS/CNET
> College of Information and Mathematical Sciences
> Clayton State University
> http://cims.clayton.edu/bjeff
> _______________________________________________
> Ale mailing list
> Ale at ale.org<mailto:Ale at ale.org>
> http://mail.ale.org/mailman/listinfo/ale
> See JOBS, ANNOUNCE and SCHOOLS lists at
> http://mail.ale.org/mailman/listinfo
>
Content-Description: ATT00001..txt
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://mail.ale.org/mailman/listinfo/ale
> See JOBS, ANNOUNCE and SCHOOLS lists at
> http://mail.ale.org/mailman/listinfo
--
Byron A. Jeff
Department Chair: IT/CS/CNET
College of Information and Mathematical Sciences
Clayton State University
http://cims.clayton.edu/bjeff
More information about the Ale
mailing list