在Linux命令行中有很多方法可以将文本从小写更改为大写,反之亦然。事实上,有一组这样的命令可供选择。本文研究了一些用于完成这项工作的出色命令,以及如何让它们发挥作用。使用trtr(translate)命令是最容易在命令行或脚本中使用的命令之一。如果你想确定你想要一个大写字符串,你只需将它传递给tr,就像这样:$echoHelloThere|tr[:lower:][:upper:]HELLOTHERE下面是在脚本中使用这个命令的例子,你想确保你添加到文件中的所有文本都是大写的以保持一致性(LCTT注释:在此处输入部门名称作为示例):#!/bin/bashecho-n"Enterdepartmentname:"readdeptecho$dept|tr[:lower:][:upper:]>>depts将顺序切换为[:upper:][:lower:]具有相反的效果,将所有大写部门名称转换为小写:echo$dept|tr[:upper:][:lower:]>>depts同样,你可以使用sed命令的A-Z和a-z字符串来完成同样的事情:echo$dept|tra-zA-Z>>depts当然,把a-z和a-z的顺序倒过来A-Z字符串会产生相反的效果,使文本全部小写。使用awkawk命令可让您对其toupper和tolower选项执行相同的操作。上述示例脚本中的命令可以这样替换:echo$dept|awk'{printtoupper($0)}'>>depts逆向操作(转为小写)如下:echo$dept|awk'{printtolower($0)}'>>depts也可以使用sedsed(流编辑器)命令来切换大小写。它与上面显示的两个命令中的第一个具有相同的效果。echo$dept|sed's/[a-z]/\U&/g'>>depts要从大写字母切换为小写字母,只需将行尾附近的U替换为L。echo$dept|sed's/[A-Z]/\L&/g'>>depts操作文件中的文本awk和sed都可以更改整个文件的文本大小写。那么,你有没有发现你的老板要求所有部门名称小写?没问题。只需使用文件名运行以下命令:$awk'{printtolower($0)}'deptsfinancebillingbookkeeping如果要覆盖depts文件,而不仅仅是小写,则需要执行以下操作:$awk'{printtolower($0)}'depts>depts-$mvdepts-depts然而,使用sed进行修改,可以避免最后一步,因为sed可以“就地”编辑文件,如下图,文件完整,但文字全部小写:$sed's/[A-Z]/\L&/g'depts仅将第一个字母转换为大写要仅将字符串中单词的第一个字母转换为大写,您可以执行以下操作:$echodesign\&engineering|sed-e"s/\b\(.\)/\\u\1/g"Design&Engineering此命令将确保首字母大写,但不会更改其余字母。确保只有第一个字母大写当您想要更改文本以便只有第一个字母大写时,这更具挑战性。假设您正在处理工作人员姓名列表,并希望以正常的“名字,姓氏”方式对它们进行格式化。1.使用sed你可以使用更复杂的sed命令来确保以下结果:$echodesign\&ENGINEERING|sed's/\b\([[:alpha:]]\)\([[:alpha:]]*\)\b/\\u\1\L\2/g'设计与工程2。使用Python如果你安装了Python,你可以运行这样的命令,它也会格式化文本,以便只有每个单词的第一个字母大写,并且它可能比上面显示的sed命令更容易解析:$echo-n“设计与工程”|python3-c"importsys;print(sys.stdin.read().title())"Design&Engineering有多种方式可以切换大小写改变文本格式。哪种方法最有效取决于您处理的是单个字符串还是整个文件,以及您想要的最终结果。
