我相信大家在 Linux 系统上工作的时候,都会遇到比如编辑文本,或者字符大小写转换等类似比较繁琐的工作,肯定会想有没有能简化或者让工作变得更容易的命令。答案是,当然有!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 命令(文本三剑客之一),你可以使用它的 toupper 和 tolower 选项来进行相同的操作。同样是上例,脚本中的命令可以使用以下方式代替执行:

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

上边是将字符转换为大写字符,下边则是相反操作,转换为小写字符:

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

sed 命令

既然讲到了 awk 命令,那么 sed (stream editor)命令也必需得聊聊。它也是文本三剑客之一,同样可以达到切换大小写字符的效果:

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

sed 命令需要用到正则表达式,上边这条命令是切换大写,下边则是切换小写。套路不变,只需把命令中的 U 换成 L 、[a-z] 换成 [A-Z] 即可:

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

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

这里有人可能会问:我可以将一个文本文件里的字符进行大小写转换吗?答案是:必须的。

awk 和 sed 两个命令都支持修改整个文件的文本大小写。

将文本文件 depts 内容修改为小写示例:

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

其结果如下:

enter department name:

finance

billing

bookkeeping

这里要注意下,上面的示例只是将打印出的文本内容修改为小写,文本文件本身内容未修改,使用 cat depts 命令一看便知。若要修改文本里的内容为小写字符,则需要执行下面的命令:

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

$ mv depts- depts

而如果使用 sed 命令进行相同操作,则不需要执行最后一步 mv depts- depts 命令,它可以一步到位修改成小写字符:

$ 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 代码完成

绝大多数 Linux 系统上都会安装 python (若是没有可以自行安装下,Python 还是挺香的),Python 还可以设置文本格式,使得每个单词只有首字母大写(主要是比 sed 命令好理解),执行下面的命令搞定:

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

Design & Engineering

小结

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

linux命令描述大小写,在Linux命令行内直接进行大小写转换相关推荐

  1. css怎么将块元素变成,CSS块元素、行内元素、行内块元素的转换

    一.块元素转行内元素:display:inline 二.行内元素转块元素:display:block div{ display: inline; /*无效 width: 500px; height: ...

  2. HTML的display属性将行内元素、块状元素、行内块状元素互相转换以及三者的区别

    1.行内元素 查看演示 (1)设置宽高无效 (2)对margin仅设置左右方向有效,上下无效:padding设置上下左右都有效,即会撑大空间 (3)不会自动进行换行 <html> < ...

  3. 块元素和行内元素及其元素转换

    怎么区分块元素.行内元素以及行内块元素呢,以及他们之间怎么相互转换呢? 1.块元素 特点: 独占一行 可以对其设置 宽.高.内外边距 宽度默认为容器的100% 布局时,块元素可以包含块元素和行内元素 ...

  4. Linux内存描述之概述--Linux内存管理(一)

    1 前景回顾 1.1 UMA和NUMA两种模型 共享存储型多处理机有两种模型 均匀存储器存取(Uniform-Memory-Access,简称UMA)模型 将可用内存以连续方式组织起来, 非均匀存储器 ...

  5. linux用户组管理命令_Linux用户和组命令能力问题和解答

    linux用户组管理命令 This section contains Aptitude Questions and Answers on Linux User and Group Commands. ...

  6. 查找域控命令_AD 域控查询命令 dsquery

    AD DS 管理工具命令 描述: 该工具的命令集允许您根据指定的标准查询目录. 除 dsquery * 之外 (dsquery * 可以查询任何类型的对象), 以下每一个 dsquery 命令均可查找 ...

  7. vim 中如何替换选中行或指定几行内的文本

    以下命令将文中所有的字符串idiots替换成managers: :1,$s/idiots/manages/g 2. 通常我们会在命令中使用%指代整个文件做为替换范围: :%s/search/repla ...

  8. 行内元素如何转换成行内块元素使用?

    做成下面的效果该如何来做呢? 代码如下: <!DOCTYPE html> <html lang="en"><head><meta char ...

  9. 行内块元素的间隙解决办法

    在默认情况下,行内块元素(例如img.input)都存在间隙问题,例如说div中不写宽高的时候,给了个粉色的背景色,方便能看出div和图片之间的间隙,这时嵌套一个img,由图片撑开div,这时会明显的 ...

最新文章

  1. python动态页面元素爬取_python编程练习:爬虫爬取动态网页批量下载气象站数据...
  2. 如果你要对一个变量进行反向传播,你必须保证其为Tensor
  3. python线性整数规划求解_实例详解:用Python解决整数规划问题!
  4. Spring MVC 基础
  5. Java关键字synchronized详解
  6. 如何在CentOS 7上安装Redis服务器
  7. tomcat的配置支持多个网站
  8. qt 3d迷宫游戏_Steam上最硬核的恐怖游戏?玩家耗时一个月才通第一关!
  9. PHP - 如何解决中文乱码
  10. Spring Boot Transaction 源码解析(一)
  11. 【转】三、QT例子-打开一个图片并且显示
  12. 华为nova4是不是鸿蒙系统,华为nova 4手机什么时候可以升级鸿蒙系统?鸿蒙系统nova4升级时间介绍...
  13. linux strace cpu,如何定位死循环或高CPU使用率(linux)
  14. centos 6.5 安装谷歌浏览器Chrome
  15. [置顶] Android玄铁剑之TextView之图文并茂
  16. Unity-TouchScripts中使用TUIO的记录和简单的代码分析
  17. Java中使用多态的好处和弊端及其举例
  18. mac 微信防撤回插件
  19. Cluster04 - Ceph概述 部署Ceph集群 Ceph块存储
  20. ZLMediaKit Windows编译快速入门

热门文章

  1. debian7 安装Rhythmbox歌词插件
  2. 如何学习Linux驱动开发?
  3. springboot生成接口文档
  4. Interger和Int的区别
  5. FPGA学习日志——三八译码器Decoder
  6. vc调试多线程程序的方法
  7. [算法学习]模拟退火算法(SA)、遗传算法(GA)、布谷鸟算法(CS)、人工蜂群算法(ABC)学习笔记---附MATLAB注释代码
  8. 【目标检测】YOLOv3 ,多尺度检测与特征融合
  9. 2019,淘宝无货源转型之路势在必行,单类目玩法实操案例解析
  10. 计算机中的域到底是什么意思?有什么用出?我们为什么要加入域?域和工作组有什么分别呢?