如何更改UTF文件的大小写

我有大写的UTF文件,我想把所有的单词改成小写。

我努力了:

`$ tr '[:upper:]' '[:lower:]' < input.txt > output.txt` 

但只改变没有口音的字符。

谢谢

这是因为默认字符类只适用于标准的ASCII,其中不包括大部分国际重音字符。 如果您有一组定义的字符,最简单的方法就是手动添加从特殊大写字符到特殊小写字符的映射:

tr'ÄUU[:upper:]''äöü[:lower:]'

如果你只有一些重音字符,这是可行的。

最后,我发现最简单的方法是使用awk:

 awk '{print tolower($0)}' < input.txt > output.txt 

不,问题是tr不能识别Unicode。

 $ grep -o '[[:upper:]]' <<< JalapeÑo J Ñ $ tr '[:upper:]' '[:lower:]' <<< JalapeÑo jalapeÑo 

使用[:upper:]等的理由是为了处理ASCII以外的字符。 否则,你可以使用[AZ][az] 。 这也是为什么PCRE有一个名为[:ascii:]]的字符类:

 $ perl -pe 's/[[:ascii:]]//g' <<< jalapeño ñ