On 5/19/2013 9:03 AM, Larry Martell wrote:
On Sat, May 18, 2013 at 6:31 PM, James Pifer jep@obrien-pifer.com wrote:
On 5/18/2013 3:23 PM, Larry Martell wrote:
On Sat, May 18, 2013 at 1:15 PM, James Pifer jep@obrien-pifer.com wrote:
Sorry for the off topic, but don't a better resource. I'm not great at scripting, but need a quick script to modify a file.
I have a long file that has lines like this:
some text some text2 CN=DATA.OU=XYZ.O=CO some text3 some text4
And this repeats, but XYZ changes. "DATA" is always called data. (it's being renamed basically)
I need to change the middle line but leave the rest of the file as is like this:
some text some text2 CN=XYZ_DATA.OU=XYZ.O=CO some text3 some text4
Anyone know a quick way to do this? Any help is appreciated.
cat file | sed -e's/CN=DATA.OU=(.*).O=CO/CN=\1_DATA.OU=\1.O=CO/'
Larry,
Thanks for the answer. Still having trouble making it work. Been looking at sed for the last two hours. Let me give a specific example of a few lines I would want to change:
Let's say my original lines are: CN=DATA.OU=XYZ.O=CO CN=DATA.OU=XYY.OU=MEM.O=CO CN=DATA.OU=XZZ.OU=OOP.O=CO
I want them to look like: CN=XYZ_DATA.OU=XYZ.O=CO CN=XYY_DATA.OU=XYY.OU=MEM.O=CO CN=XZZ_DATA.OU=XZZ.OU=OOP.O=CO
So I need to take the data after the FIRST OU and stick in front of DATA with an _ in between. The rest of the line then remains the same.
Hope it makes sense. Appreciate the help!
sed only does greedy matching, so you'll have to move to a more modern tool. I'd do this in python. Something like this:
import re, sys
pattern = re.compile('^(CN=)(DATA.OU)(.*?)(..*$)')
for path in sys.argv: with open(path, 'r') as fh: for line in fh: line = line.strip() match = pattern.match(line) if match: print match.group(1)+match.group(3)+'_'+match.group(2)+match.group(3)+match.group(4) else: print line
When I run that with your input I get your desired output. _______________________________________________ CentOS mailing list CentOS@centos.org http://lists.centos.org/mailman/listinfo/centos
Thanks Larry! I was able to get it working!!!
James