内容简介:有很多方法可以在 Linux 命令行中将文本从小写更改为大写,反之亦然。实际上,有一组这样的命令可以选择。这篇文章检验了一些优秀的命令来完成这项工作,以及你该如何让它们正常工作。tr(translate)命令是在命令行或脚本中最容易使用的命令之一。如果你要确定要一串大写字符串,你只需将它传给 tr,如下所示:
有很多方法可以在 Linux 命令行中将文本从小写更改为大写,反之亦然。实际上,有一组这样的命令可以选择。这篇文章检验了一些优秀的命令来完成这项工作,以及你该如何让它们正常工作。
使用 tr
tr(translate)命令是在命令行或脚本中最容易使用的命令之一。如果你要确定要一串大写字符串,你只需将它传给 tr,如下所示:
$ echo Hello There | 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
但是,使用 sed 进行更改,你可以避免最后一步,因为 sed 可以“原地”编辑文件,如下所示,文件完整,但文本全部小写:
$ sed 's/[A-Z]/\L&/g' depts
仅将首字母转换为大写
要仅将字符串中单词的首字母转换为大写,那么可以执行以下操作:
$ echo design \& engineering| sed -e "s/\b\(.\)/\\u\1/g" Design & Engineering
该命令将确保首字母大写,但不会更改其余字母。
确保只有首字母大写
当要更改文本以使只有首字母大写时,这更具挑战性。假设你正在处理一个工作人员姓名列表,并且希望以正常的“名 姓”方式对其格式化。
1. 使用 sed
你可以使用更复杂的 sed 命令来确保以下结果:
$ echo design \& ENGINEERING | sed 's/\b\([[:alpha:]]\)\([[:alpha:]]*\)\b/\\u\1\L\2/g' Design & Engineering
2. 使用 Python
如果你已安装 Python,你可以运行这样的命令,它还可以设置文本格式,以便每个单词只有首字母大写,并且它可能比上面显示的 sed 命令更易于解析:
$ echo -n "design & engineering" | python3 -c "import sys; print(sys.stdin.read().title())" Design & Engineering
有多种方法可以在大小写之间更改文本格式。哪种方法效果最好取决于你要处理的是单个字符串还是整个文件,以及想要的最终结果。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
- 一款开发小程序自动wxss转换的命令行工具
- JavaScript进阶系列-类型转换、隐式类型转换
- Android 多国语言转换 Excel 和 Excel 转换为 string
- [SSL证书转换(一)]关于JKS 转换成 CRT 和 KEY
- c++中几种常见的类型转换。int与string的转换,float与string的转换以及string和long类型之间的相互...
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入理解LINUX内核(第三版)
(美)博韦,西斯特 / 陈莉君;张琼声;张宏伟 / 中国电力出版社 / 2007-10-01 / 98.00元
为了彻底理解是什么使得Linux能正常运行以及其为何能在各种不同的系统中运行良好,你需要深入研究内核最本质的部分。内核处理CPU与外界间的所有交互,并且决定哪些程序将以什么顺序共享处理器时间。它如此有效地管理有限的内存,以至成百上千的进程能高效地共享系统。它熟练地统筹数据传输,这样CPU 不用为等待速度相对较慢的硬盘而消耗比正常耗时更长的时间。 《深入理解Linux内核,第三版》指导你对内核......一起来看看 《深入理解LINUX内核(第三版)》 这本书的介绍吧!