转换文本的大小写可能非常繁琐,尤其是当你要避免无意间的拼写错误时。幸运的是,Linux 提供了一些命令,可以使工作变得非常容易。
-- Sandra Henry-stocker(作者)

有很多方法可以在 Linux 命令行中将文本从小写更改为大写,反之亦然。实际上,有一组这样的命令可以选择。这篇文章检验了一些最佳的命令来完成这项工作,以及你该如何让它们正常工作。

使用 tr

tr(translate)命令是在命令行或脚本中最容易使用的命令之一。如果你要确定要一串大写字符串,你只需将它传给 tr,如下所示:

$ echo Hello There | tr [:lower:] [:upper:]
HELLO THERE

下面是一个在脚本中使用这个命令的例子,当你要确保添加到文件中的所有文本都使用大写形式以保持一致性时(LCTT 译注:这里输入部门名称作为示例):

#!/bin/bashecho -n "Enter department name: "
read dept
echo $dept | tr [:lower:] [:upper:] >> depts

将顺序切换为 [:upper:] [:lower:] 会产生相反的效果,将所有大写的部门名称都转换为小写:

echo $dept | tr [:upper:] [:lower:] >> depts

同样,你可以使用 sed 命令的 A-Za-z 字符串完成相同的操作:

echo $dept | tr a-z A-Z >> depts

毫无疑问,反转 a-zA-Z 字符串的顺序将产生相反的效果,将文本全部变为小写。

使用 awk

awk 命令可让你使用它的 touppertolower 选项执行相同的操作。上例脚本中的命令可以用这种方式代替:

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

操作文件中的文本

awksed 都能更改整个文件的文本大小写。因此,你发现你的老板需要所有部门名称的小写么?没问题。只需带上文件名运行以下命令:

$ 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(.)/u1/g"
Design & Engineering

该命令将确保首字母大写,但不会更改其余字母。

确保只有首字母大写

当要更改文本以使只有首字母大写时,这更具挑战性。假设你正在处理一个工作人员姓名列表,并且希望以正常的“名 姓”方式对其格式化。

使用 sed

你可以使用更复杂的 sed 命令来确保以下结果:

$ echo design & ENGINEERING | sed 's/b([[:alpha:]])([[:alpha:]]*)b/u1L2/g'
Design & Engineering

使用 Python

如果你已安装 Python,你可以运行这样的命令,它还可以设置文本格式,以便每个单词只有首字母大写,并且它可能比上面显示的 sed 命令更易于解析:

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

有多种方法可以在大小写之间更改文本格式。哪种方法效果最好取决于你要处理的是单个字符串还是整个文件,以及想要的最终结果。


linux字符串转大写_在 Linux 命令行中转换大小写相关推荐

  1. linux 字符串加入中括号,方括号及其在命令行中的不同用法介绍

    通配 方括号最简单的用法就是通配.你可能在知道"Globbing"这个概念之前就已经通过通配来匹配内容了,列出具有相同特征的多个文件就是一个很常见的场景,例如列出所有 JPEG 文 ...

  2. mysql 命令行 换行_在MySQL命令行中使用SQL语句的规则

    规则1: SQL语句必须以分号(;)或者(\G)结束 分号(;)是SQL语句的结束标志.如果遗忘了分号,而直接按下回车键时,在MySQL客户端上将显示如下 mySQL> SELECT * FRO ...

  3. redis 命令 数据清理_如何在命令行中清理数据

    redis 命令 数据清理 我是兼职数据审计师. 可以将我视为校对员,使用数据表而不是散文页面. 这些表是从关系数据库中导出的,通常大小适中:100,000至1,000,000条记录和50至200个字 ...

  4. json 格式化工具_如何在命令行中优雅地处理JSON

    当年刚出道的时候,整天使用 grep/cut/awk 处理各种纯文本日志.那时候的日志都是一行一条,内容使用特定分割符.使用各种 unix 命令配合管道真可谓得心应手. 然而,到了 9102 年,好多 ...

  5. linux 复制包括子目录_【Linux分享】Linux常用命令+教程分享

    今天分享分为两部分 :)PART01 Linux常用命令分享/PART02 关于BD面试经验分享    30mins  Linux Command:PART 1 你本可以张口就来.....本篇内容分享 ...

  6. 如何在Linux命令行中替换多个文件中的字符串

    本文翻译自:How to replace a string in multiple files in linux command line I need to replace a string in ...

  7. centos 计算器_在Linux命令行中使用计算器的5个命令详解

    大家好,我是良许. 在使用 Linux 时,我们有时会需要做一些计算,那么我们就可能需要用到计算器.在 Linux 命令行里,有许多计算器工具,这些命令行计算器可以让我们执行科学计算.财务计算或者一些 ...

  8. linux快捷命令补齐,Linux Shell简介——自动补齐/命令行的历史记录/编辑命令行/可用的 Shell 快捷方式.doc...

    Linux Shell简介--自动补齐/命令行的历史记录/编辑命令行/可用的 Shell 快捷方式 Unix (及后继者 Linux)在命令行下面诞生,因此,Unix 中的命令行有许多非常实用的功能. ...

  9. linux 垃圾桶命令,linux下的一些好用的命令行

    linux下的一些好用的命令行 添加环境变量 Linux 中需要将 libjakaAPI.so 和 jkrc.so 放在同一个文件夹下,并添加当前文件夹路径到环境变量, 使用命令 export LD_ ...

最新文章

  1. 传感器融合带来多重好处
  2. 学python培训到底能干嘛
  3. Linux 计划任务整理
  4. 几款开源的数据挖掘工具
  5. 【安全系列之XSS】XSS攻击测试以及防御
  6. Oracle Connect By Start With 总结==转帖
  7. 在 Azure App Service 上启用 Application Request Routing
  8. 基于Kmeans算法的文档聚类(包含Java代码及数据格式)
  9. ios 请在设置中打开相机权限_在iOS中请求摄像头权限对话框启动(Prime权限)
  10. “百度云手机”旗舰版发布,堪比旗舰真机?只需77元/月!
  11. 进击的爱奇艺文学:如何成为苹果园生态的重要一环?
  12. java读取和写入txt_Java读取和写入txt文件
  13. 闲来无事研究一下酷狗缓存文件kgtemp的加密方式
  14. STM32F103_study62_The punctual atoms(Clock system initialization function analysis)
  15. c语言生成exe文件,打开exe文件闪退怎么办
  16. Windows + VS Code搭建 Go 开发环境
  17. AndroidStudio 个人总结的快捷键
  18. python 画图时各种颜色代码
  19. nba全明星java_2018nba全明星阵容
  20. 阿里云学生服务器购买以及安装

热门文章

  1. matlab gpu deep learning_在Matlab中使用tensorflow (1)
  2. java 反射应用_java反射(二)--反射应用案例
  3. 使用sys导出oracle,oracle 让sys用户执行exp导出操作
  4. php 右下脚弹窗,纯js的右下角弹窗实例代码
  5. future 线程报错后_线程池运用实例——一次错误的多线程程序设计以及修复过程...
  6. 6.4 JAVA 方法重载
  7. Laravel 查询某天数据 whereDate
  8. 正则表达式--python的re模块
  9. javascript之构造器
  10. 腾讯2013年校园招聘笔试试题