在编辑文本时大小写常常是需要注意的地方,大小写的转换是很枯燥而繁琐的工作,所幸,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. 小程序开发-媒体组件video使用入门

    video 视频(v2.4.0 起支持同层渲染).相关api:wx.createVideoContext 常见属性如下: 支持的格式 示例: <video src="http://wx ...

  2. 借助rownum中求Oracle表中前三名(三甲:状元榜眼探花)的方法(总计三种方法,以讲述rownum的使用为主)

    要求前三名,MySQL中有order by排序,limit限制数量,结果很容易得到,而且limit的执行顺序也在order by之后,写出的sql高效易懂而不易出错. 但在oracle中,由于没有li ...

  3. 【NOIP2015模拟】终章-剑之魂

    背景介绍 古堡,暗鸦,斜阳,和深渊-- 等了三年,我独自一人,终于来到了这里-- "终焉的试炼吗?就在这里吗?"我自言自语道. "终焉的试炼啊!就在这里啊!"我 ...

  4. python之类方法和静态方法

    在类中定义的函数称为方法,主要有三种:实例方法.类方法.静态方法. class MyTest(): # 普通实例函数 def func1(self, arg1, arg2): pass # 类函数 @ ...

  5. python之map

    python之Map函数   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # map()函数使用举例 # 功能: ...

  6. [leetCode]5. 最长回文子串(DP)

    题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 题解 dp.先初始化长度为1和长度为2的串.再依次算长度为3,4,5.... 当找到回文串时,若长度比当 ...

  7. Redis主从复制、多实例、高可用

    Redis主从复制 在开始实现redis的高可用之前,首先来学习一下如何实现redis的主从复制,毕竟高可用也会依赖主从复制的技术. Redis的主从复制,可以实现一个主节点master可以有多个从节 ...

  8. Prometheus之Exporter开发

    Prometheus开发Exporter简介 Exporter 本身是一个http 服务,其指标结果只要符合 Prometheus 规范就可以被 Prometheus 使用. Prometheus中m ...

  9. hystrix熔断器之配置

    HystrixCommandProperties命令执行相关配置: hystrix.command.[commandkey].execution.isolation.strategy 隔离策略THRE ...

  10. hystrix文档翻译之配置

    Hystrix使用Archaius作为配置的默认实现,下面介绍的是HystrixPropertiesStrategy的默认实现,你也可以通过插件方式重新实现. 每一个配置有四个级别: 全局默认 当下面 ...