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 elseis 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. Cheers, Matthew -- Dr Matthew J Seaman MA, D.Phil. 7 Priory Courtyard Flat 3 PGP: http://www.infracaninophile.co.uk/pgpkey Ramsgate Kent, CT11 9PW
Description: OpenPGP digital signature