Date: Sun, 30 Nov 2008 11:25:22 -0800 From: Drew Tomlinson <drew@mykitchentable.net> To: Matthew Seaman <m.seaman@infracaninophile.co.uk> Cc: FreeBSD Questions <freebsd-questions@freebsd.org> Subject: Re: Regular Expression Help Message-ID: <4932E8A2.6030804@mykitchentable.net> In-Reply-To: <4932D91F.5040804@infracaninophile.co.uk> References: <4932CA0D.8080109@mykitchentable.net> <4932D91F.5040804@infracaninophile.co.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
Matthew Seaman wrote: > Drew Tomlinson wrote: >> I'm attempting to take an ldiff file and flip first/last name order. >> However I can not figure out how to match hyphenated last names. In >> vim, my current search/replace string is: >> >> %s/cn=\(\w\+\-*\) \(\w\+\),/cn=\2 \1,/gc >> >> This will match: >> >> cn=Smith Joe, >> >> and replace it with: >> >> cn=Joe Smith, >> >> But it will not match: >> >> cn=Smith-Brown Joe, >> >> nor replace it with: >> >> cn=Joe Smith-Brown, >> >> I've tried various incantations of escaping and quantifying yet I can >> not figure out how to do what I want. > > Well, assuming that none of the surnames contain ',' and that the > first ' ' > (space) is always the delimiter between the surname and that anything > else > is forenames ... > % cat foo.txt cn=Smith Joe, > cn=Smith-Brown Joe, > % perl -p -e 's/cn=([^ ,]+) ([^,]+),/cn=$2 $1,/' < foo.txt cn=Joe Smith, > cn=Joe Smith-Brown, > > ie. you need a s/// command that understands negated character > classes. I > think sed(1) and vi(1) will do that, but I haven't time to look up the > precise > syntax. Perl, of course, just does the job for me. Thank you for your reply. The particular editor I was attempting to use is vim 7.1.315. However it doesn't like the above string so I tried you perl example verbatim. It works and even handles such lines as: cn=Smith-Brown Joe & Jane, to cn=Joe & Jane Smith-Brown, which I hadn't considered. I still don't really understand *why* the above works but I'm trying to pick it apart now. Thanks to you and the others for the replies. Cheers, Drew -- Be a Great Magician! Visit The Alchemist's Warehouse http://www.alchemistswarehouse.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4932E8A2.6030804>