(translate)命令是在命令行或脚本中最容易使用的命令之一。如果你要确定要一串大写字符串,你只需将它传给 tr,如下所示:
$ echoHelloThere|tr[:lower:][:upper:]
HELLO THERE
下面是一个在脚本中使用这个命令的例子,当你要确保添加到文件中的所有文本都使用大写形式以保持一致性时(LCTT 译注:这里输入部门名称作为示例):
#!/bin/bash
echo-n "Enter department name: "
read dept
echo $dept |tr[:lower:][:upper:]>> depts
将顺序切换为 [:upper:] [:lower:] 会产生相反的效果,将所有大写的部门名称都转换为小写:
echo $dept |tr[:upper:][:lower:]>> depts
同样,你可以使用 sed 命令的 A-Z 和 a-z 字符串完成相同的操作:
echo $dept |tr a-z A-Z >> depts
毫无疑问,反转 a-z 和 A-Z 字符串的顺序将产生相反的效果,将文本全部变为小写。
使用 awk
awk 命令可让你使用它的 toupper 和 tolower 选项执行相同的操作。上例脚本中的命令可以用这种方式代替:
echo $dept | awk '{print toupper($0)}'>> depts
相反操作(切换为小写)如下所示:
echo $dept | awk '{print tolower($0)}'>> depts
使用 sed
sed(stream editor)命令也可用于切换大小写。它与上面显示的两个命令中的第一个具有相同的效果。
echo $dept |sed's/[a-z]/\U&/g'>> depts
从大写字母切换到小写字母只需将行尾附近的 U 替换为 L。
echo $dept |sed's/[A-Z]/\L&/g'>> depts
操作文件中的文本
awk 和 sed 都能更改整个文件的文本大小写。因此,你发现你的老板需要所有部门名称的小写么?没问题。只需带上文件名运行以下命令:
$ awk '{print tolower($0)}' depts
finance
billing
bookkeeping
如果要覆盖 depts 文件,而不仅仅是以小写形式显示,则需要执行以下操作:
$ awk '{print tolower($0)}' depts > depts-
$ mv depts- depts