肯特的回答并没有解决我的问题,但我没有向他提供我所有的限制。我的csv输入文件是这样的:
sfou;STéphane Foù - stephane.fou@example.com;;
fbar;frédéric bâr - frederic.bar@example.com;;
hnoel;Hélène NOËL - helene.noel@example.com;;
sed脚本应仅将名称大写:
sfou;Stéphane Foù - stephane.fou@example.com;;
8945;Frédéric Bâr - frederic.bar@example.com;;
hnoel;Hélène Noêl - helene.noel@example.com;;
基于Kent 的帮助,我成功通过了这个脚本:
LC_ALL=fr_FR sed -r 's/(\w)(\w*) /\U\1\L\2 /g' test.cvs
其他语言环境没有给出正确的结果:
$ LANG=fr_FR.utf8 LC_ALL= sed -r 's/(\w)(\w*) /[\U\1\L\2] /g' test.cvs
sfou;STé[Phane] Foù - stephane.fou@example.com;;
fbar;frédé[Ric] bâ[R] - frederic.bar@example.com;;
hnoel;Hélè[Ne] NOË[L] - helene.noel@example.com;;
$ LANG=C LC_ALL= sed -r 's/(\w)(\w*) /[\U\1\L\2] /g' test.cvs
sfou;STé[Phane] Foù - stephane.fou@example.com;;
fbar;frédé[Ric] bâ[R] - frederic.bar@example.com;;
hnoel;Hélè[Ne] NOË[L] - helene.noel@example.com;;
$ LANG=en_US.utf8 LC_ALL= sed -r 's/(\w)(\w*) /[\U\1\L\2] /g' test.cvs
sfou;STé[Phane] Foù - stephane.fou@example.com;;
fbar;frédé[Ric] bâ[R] - frederic.bar@example.com;;
hnoel;Hélè[Ne] NOË[L] - helene.noel@example.com;;
语言环境en_US
和fr_FR
(不带.utf8
)都可以:
$ LANG=en_US LC_ALL= sed -r 's/(\w)(\w*) /[\U\1\L\2] /g' test.cvs
sfou;[Stéphane] [Foù] - stephane.fou@example.com;;
fbar;[Frédéric] [Bâr] - frederic.bar@example.com;;
hnoel;[Hélène] [Noël] - helene.noel@example.com;;
$ LANG=fr_FR LC_ALL= sed -r 's/(\w)(\w*) /[\U\1\L\2] /g' test.cvs
sfou;[Stéphane] [Foù] - stephane.fou@example.com;;
fbar;[Frédéric] [Bâr] - frederic.bar@example.com;;
hnoel;[Hélène] [Noël] - helene.noel@example.com;;
注意:我\w
从CodeGnome 的链接中发现。