我有大写的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 ñ