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
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"