在编辑文本时大小写常常是需要注意的地方,大小写的转换是很枯燥而繁琐的工作,所幸,Linux 提供了很多能让这份工作变得容易的命令。接下来让我们看看都有哪些完成大小写转换的命令。

tr 命令

tr (translate) 是能运用在命令行或者脚本上的最简单的大小写转换命令之一。例如如果你想要让一串字符串全部是大写字母,你可以用如下所示的命令完成这个内容:

$ echo hello alvin | tr [:lower:] [:upper:]
HELLO ALVIN

以下为该命令应用在脚本上的例子,写入文件depts的内容全会是大写的格式:

$ echo "Enter department name: " | tr [:lower:] [:upper:] >> depts

上面命令的顺序换为 [:upper:] [:lower:] 将会得到相反的结果,所有输入的字母都将变为小写字母:

$ echo "Enter department name: " | tr [:upper:] [:lower:] >> depts

你可以用 A-Z a-z 代替 [:upper:] [:lower:] 来达到相同的效果:

$ echo "Enter department name: " | tr a-z A-Z >> depts

awk 命令

awk 命令用 touppertolower 这两个选项完成大小写转换。上文所述的对脚本进行的大小写转换可以用这个命令以如下的方式完成:

$ echo "Enter department name: " | awk '{print toupper($0)}' >> depts

以上是转换成大写字母,下面为转换为小写字母的方法:

$ echo "Enter department name: " | awk '{print tolower($0)}' >> depts

sed 命令

sed (stream editor) 命令同样能够很好完成大小写转换的工作,下面的命令也能够达到前面两个命令的效果:

$ echo "Enter department name: " | sed 's/[a-z]/\U&/g' >> depts

要想完成相反的转换,只需把上面那条命令中的 U 换成 L[a-z] 换成 [A-Z] 即可:

$ echo "Enter department name: " | sed 's/[A-Z]/\L&/g' >> depts

修改文件里文本内容的大小写格式

awksed 命令都可以完成对整个文档内容的大小写转换工作,所以如果你需要把整个文档内容转换成小写,你可以用如下命令以小写的形式输出某文件的内容至屏幕上:

$ awk '{print tolower($0)}' depts

其结果如下:

enter department name:
finance
billing
bookkeeping

注意此结果只是将打印在屏幕的内容转换为了小写,本身文档内的大写字母并无变动,使用 cat depts 命令查看便可知道。如果你想要确实地修改文档内容的大小写,你可以用如下命令完成:

$ awk '{print tolower($0)}' depts > depts-
$ mv depts- depts

sed 命令可以完成和 awk 相同的功能,只是用法上略有不同,其使用方法如下:

$ sed 's/[A-Z]/\L&/g' depts

只让首字母大写

只让一串字符串中各个单词的首字母大写,可以用如下的命令完成:

$ echo design \& engineering| sed -e "s/\b\(.\)/\u\1/g"
Design & Engineering

上面这一条命令可以只让首字母大写而其他字母不变。

确保只有首字母大写

当你需要对一大批文本进行这个操作的时候,比如要以正确的格式显示一大批人的姓名时,需要做的事情会变得稍微难一些。这里提供两种方法完成这个任务:

sed 命令完成

为了确保结果正确,需要更加复杂的 sed 命令格式:

$ echo design \& ENGINEERING | sed 's/\b\([[:alpha:]]\)\([[:alpha:]]*\)\b/\u\1\L\2/g'
Design & Engineering

用 python 代码完成

如果你的 Linux 上安装了 python ,你可以用如下的命令完成对文本的首字母大写格式化,python 代码比上文的 sed 命令的正则式要容易理解多了:

$ echo -n "design & engineering" | python3 -c "import sys; print(sys.stdin.read().title())"
Design & Engineering

Linux 里面有许多用于大小写转换的命令,哪一个用着更好取决于你是处理一串字符还是整个文件。希望本文介绍的各种命令能对你有所帮助,如果你对这些命令有什么疑问,欢迎留言讨论!


公众号:良许Linux

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

在Linux命令行内的大小写转换的更多相关文章

  1. 《Linux命令行与shell脚本编程大全 第3版》

    第一部分 Linux 命令行 第1章  初识Linux she1.1   什么是Linux 21.1.1 深入探究Linux 内核 31.1.2 GNU 工具 61.1.3 Linux 桌面环境 81 ...

  2. 40个超有趣的Linux命令行彩蛋和游戏

    40个有趣的Linux命令行彩蛋和游戏,让你假装成日理万机的黑客高手.附一键安装脚本,在树莓派和ubuntu云主机上亲测成功,有些还可以在Windows的DOS命令行中运行. 本文配套B站视频:40个 ...

  3. [转]12款最佳Linux命令行终端工具

    摘要 “工欲善其事必先利其器”,作为菜鸟,也是从别人那里偷学来的一些东东.今天看到同事用到一个终端命令行工具,觉得自己弱爆了.然后在网上搜了下该工具.发现类似的工具还是挺多的,只是自己不知道罢了. 原 ...

  4. 12款最佳Linux命令行终端工具, 20款优秀的 Linux 终端仿真器

    12款最佳Linux命令行终端工具     如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的 ...

  5. Linux命令行–初识Linux shell

    shell及脚本简介  GNU/Linux shell 是个交互工具,它为用户提供了启动程序.管理文件系统上的文件以及管理运行在Linux系统上的进程的途径 . shell的核心是命令行提示符 它是s ...

  6. 在Linux命令行下令人惊叹的惊叹号(!)

    '!'符号在Linux中不但可以用作否定符号,还可以用来从历史命令记录中取出命令或不加修改的执行之前运行的命令.下面的所有命令都已经在Bash Shell中经过确切地检验.尽管我没有试过,但大多都不能 ...

  7. Linux命令行技巧

    Linux命令行技巧 命令 描述 • apropos whatis 显示和word相关的命令. 参见线程安全 • man -t man | ps2pdf - > man.pdf 生成一个PDF格 ...

  8. Linux命令行批量替换多文件中的字符串【转】

    Linux命令行批量替换多文件中的字符串[转自百度文库] 一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一.Mahuinan法: 用sed命令可以批量替换多个文件中的字符串. ...

  9. 20个linux命令行工具监视性能(下)

    昨天晚上第一次翻译了<20 Command Line Tools to Monitor Linux Performance>中的前十个命令,翻译得不是很好,今天晚上继续把后面的十个也翻译给 ...

随机推荐

  1. Kubernetes 服务部署最佳实践(一) ——如何更好地设置 Request 与 Limit

    如何为容器配置 Request 与 Limit? 这是一个即常见又棘手的问题,这个根据服务类型,需求与场景的不同而不同,没有固定的答案,这里结合生产经验总结了一些最佳实践,可以作为参考. 所有容器都应 ...

  2. H5简单内容

    1.简单认识H5 HTML5不仅仅是作为HTML标记语言的一个最新版本,更重要的是它指定了Web开发的一系列标准,成为第一个将Web作为应用开发平台的HTML语言. 我们日常讨论的H5其实是有一个泛称 ...

  3. RocketMQ生产部署架构如何设计

    前言 看了我们之前的文章,相信小伙伴们对RocketMQ已经有了一个初步的了解,那么今天我们就来聊一聊具体如何来设计一套高可用的生产部署架构. 在聊如何设计这套架构的同时,我们再补充一些之前没提到的知 ...

  4. linux下部署python项目到jenkins

    环境:linux+jenkins+tomcat+git+python3.7 1.安装jdk 上传安装包到usr/local 解压 配置环境变量 vim /etc/profile export JAVA ...

  5. charles安装破解步骤

    访问该地址https://www.zzzmode.com/mytools/charles/ 安装——生成破解工具charles.jar——替换

  6. Unit1:Android

    unit1 1.安卓版本 最新数据访问维基百科 2008年,android1.0 2011年,android3.0,平板失败 同年10月,android4.0,无差别使用 2014年,android5 ...

  7. JavaScript 流程控制-循环

    1.循环 循环目的 在实际问题中,有许多具有规律性的重复操作,因此在程序中要完成这类操作就需要重复执行某些语句 JS中的循环 在JS中,主要有三种类型的循环语句: for循环 while循环 do.. ...

  8. CEO的行为风格会影响公司业绩吗?

    中国的两大互联网巨头--腾讯和阿里,创始人的风格非常不同.在公众面前,马云的形象是高谈阔论,而马化腾则显得较为低调.在公司管理上,马云不插手具体事务,而是站在高处务虚,抓战略.抓文化,而马化腾则是腾讯 ...

  9. netty之handler write

    转载自:https://blog.csdn.net/FishSeeker/article/details/78447684 实验过,例如channle的handler里有很多个outhandler,在 ...

  10. java8的::

    public static void main(String[] args) throws Exception { // 第一种方法引用的类型是构造器引用,语法是Class::new,或者更一般的形式 ...