仅将大写单词转换为小写以取消名词的大写
Convert capitalized words only into lower case to cancels capitalization of nouns
给定:
$ cat input
Hello
Welcome
strIng
North Korea
USA
U.K.
我要获取:
$ cat output
hello
welcome
strIng
North Korea
USA
U.K.
如何将大写单词*仅转换为小写?
*:第一个字母大写。
注意:我正在寻找一个取消名词大写的命令,同时不攻击首字母缩略词和奇怪的单词。
像这样的内容将涵盖示例输入,但不确定它是否包含所有其他隐含条件
$ awk '/^[A-Z][^A-Z]+$/{=tolower(substr(,1,1)) substr(,2)}1' file
hello
welcome
strIng
North Korea
USA
U.K.
如果第一个字符匹配大写字母而任何后续字符都不是,则将第一个字符转换为小写字母。
一个sed
解决方案:
sed '/^[A-Z][^A-Z]*$/ {
/^./y/ABCEDEFGHIJKLMNOPQRSTUVWXYZ/abcedefghijklmnopqrstuvwxyz/
}' input.txt > output.txt
已测试并确认适用于您的示例。修改以适用于重音字符(不确定 awk 的 toupper
对它们的处理效果如何)。
给定:
$ cat input
Hello
Welcome
strIng
North Korea
USA
U.K.
我要获取:
$ cat output
hello
welcome
strIng
North Korea
USA
U.K.
如何将大写单词*仅转换为小写?
*:第一个字母大写。
注意:我正在寻找一个取消名词大写的命令,同时不攻击首字母缩略词和奇怪的单词。
像这样的内容将涵盖示例输入,但不确定它是否包含所有其他隐含条件
$ awk '/^[A-Z][^A-Z]+$/{=tolower(substr(,1,1)) substr(,2)}1' file
hello
welcome
strIng
North Korea
USA
U.K.
如果第一个字符匹配大写字母而任何后续字符都不是,则将第一个字符转换为小写字母。
一个sed
解决方案:
sed '/^[A-Z][^A-Z]*$/ {
/^./y/ABCEDEFGHIJKLMNOPQRSTUVWXYZ/abcedefghijklmnopqrstuvwxyz/
}' input.txt > output.txt
已测试并确认适用于您的示例。修改以适用于重音字符(不确定 awk 的 toupper
对它们的处理效果如何)。