在Linux 命令行中转换大小写小白常识_Linux菜鸟教程

在Linux 命令行中转换大小写小白常识

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

在Linux 命令行中转换大小写小白常识_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 

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

海计划公众号
(0)
上一篇 2020/03/20 04:06
下一篇 2020/03/20 04:06

您可能感兴趣的内容

  • Github 上 36 个最实用的 Vue 开源库小白指南_开源小白入门

    任何一个开发者,都是十分喜欢使用开源软件包的。因为它使开发工作变得更快速、高效、容易。如果没有开源软件包,开发工作将变得疲惫不堪,不断的重复造轮子!下面整理了 Github 上 36 个实用的 Vue 开源库,建议收藏!1.Bootstrap-Vue |star 10014具有超过40个插件和超过75个自定义组件,为Vue.js提供了最全面的Bootstra

    2020/03/24
  • 友盟+入门指南_国内领先的第三方全域数据服务商

    友盟+入门指南 官方网址:https://www.umeng.com/ 简介描述:国内领先的第三方全域数据服务商 友盟(Umeng),2010年4月在北京成立,是中国最专业、最有数…

    2020/03/06
  • 前端之移动页面布局基础知识_布局基础知识入门

    移动端app分类1、Native App 原生app手机应用程序使用原生的语言开发的手机应用,Android系统用的是java,iOS系统用的是object-C2、Hybrid App 混合型app手机应用程序混合使用原生的程序和html5页面开发的手机应用3、Web App 基于Web的app手机应用程序完全使用html5页面加前端js框架开发的手机应用V

    2020/03/30
  • JavaScript中typeof运算符有什么用?菜鸟教程网_运算教程视频

    JavaScript中typeof运算符可以用来检测一个变量的类型。typeof运算符会返回一个字符串,表示未经计算的操作数的类型。typeof的语法typeof是一个运算符,有2种使用方式:typeof(表达式)和typeof 变量名,第一种是对表达式做运算,第二种是对变量做运算。typeof的返回值typeof运算符的返回类型为字符串,值包括如下几种:’

    2020/03/20
  • 什么技能产品经理不会提,但技术人必须懂?基础知识_产品使用指南

    缓存是搭建高性能高并发系统的必备手段之一,通常用来解决性能瓶颈,是程序员的必备知识点,也是面试必备考点。尽管,产品经理大概率不会关注系统性能,但程序员在实现需求的时候必须思考系统承载的并发量和用户量。缓存主要用来解决性能瓶颈的问题,一旦错误使用反而会令系统崩溃。今天,我们就通过4W的方式系统化地总结缓存相关的理论知识。随着互联网业务的快速迭代以及用户量激增,

    2020/03/23
  • Taskbook菜鸟知识_命令行的任务管理工具

    Taskbook菜鸟知识 GitHub:https://github.com/klaussinani/taskbook 简介描述:命令行的任务管理工具 Taskbook 是一个基于…

    2020/03/06
  • 小程序如何自定义导航栏?小白教程_导航菜鸟知识

    状态栏通过调用 wx.getSystemInfoSync 获取const res = wx.getSystemInfoSync()
    this.setData({statusBarHeight:res.statusBarHeight
    })导航栏通过获取右上角胶囊的位置信息计算,navBarPadding为导航栏上下的间隙 let res = wx.getMen

    2020/03/24
  • 三种Js深度学习框架介绍小白帮助_框架入门知识

    谈到机器学习,我们脑海首先蹦出的编程语言是什么?一定是python。其实除了python,Javascript也是不错的选择。都说现在是大前端时代,从移动开发、服务器端,甚至桌面软件开发(比如大名鼎鼎的VS Code),都有Javascript的身影。 用Javascript写机器学习应用,当然不会从头开始手写机器学习算法和模型,通常会借助现有框架。我之前

    2020/03/26
  • 闭包原理及题型基础教程_闭包菜鸟教程网

    闭包原理及题型基础教程 闭包 函数被调用之后,会创建一个执行环境及作用域链.函数被执行完之后就会被释放掉.闭包函数执行之后会保留当前活动变量在内部函数作用域链中,所以内部函数可以访…

    2020/03/19
  • StaticFile指南攻略_免费开放式静态文件CDN服务网

    StaticFile基础知识入门 官方网址:https://www.staticfile.org/ GitHub:https://github.com/staticfile/sta…

    2020/03/06
  • Flutter介绍使用指南_Flutter入门攻略

    Flutter是Google开发的新一代跨平台方案,Flutter可以实现写一份代码同时运行在iOS和Android设备上,并且提供很好的性能体验。Flutter使用Dart作为开发语言,这是一门简洁、强类型的编程语言。Flutter对于iOS和Android设备,提供了两套视觉库,可以针对不同的平台有不同的展示效果。Flutter原本是为了解决Web开发中

    2020/03/24
  • Js函数curry化新手入门_函数入门百科

    前言最近的某次面试被问到了两次相关的问题,但是自己居然都没答好,尤其第二次,先来看看面试官给的题目是什么样子的: // 实现一个函数add使得下面这段代码返回trueadd(1)(2)(3) === add(0)(2)(4);
    这一问给我问懵逼了,add(1)(2)(3)() === add(0)(2)(4)();这样的咱会实现啊,你再多加几个参数咱也能

    2020/03/24
  • 带宽与区块链:开发人员如何最小化负担零基础入门_区块链小白帮助

    区块链使整个世界保持在同一页面上。当每个区块被铸造时,新的账本状态就将取代先前的状态。共识机制致力于确保更广泛的社区同意该状态。在一个设计良好的系统中,激励措施可确保不变性。经过足够的时间之后,状态就不会被篡改。这些区块链为我们提供了可编程的货币,并顺理成章地引起了许多人的兴趣。比特币和以太坊是最早的两种区块链。事实证明,这些账本受人欢迎且健壮,但通常被诟病

    2020/03/29
  • Pornhub Web 开发者访谈指南攻略_开发者基础知识入门

    无论你对色情内容采取何种立场,都无法否认成人网站行业对推动互联网发展具有巨大影响。从将浏览器的视频限制推送到通过WebSocket推送广告,以便广告拦截器无法检测到它们,你必须足够聪明才能在互联网的前沿进行创新。最近,我很有幸采访互联网最大的成人网站 Pornhub 的一名 Web 开发者。我想了解技术,Web API 如何改进以及在成人网站上工作的感受。请

    2020/03/23
  • Vue渲染函数指南攻略_渲染新手入门

    使用方法v-if :

    侠课岛

    template 中配合 v-if 条件渲染一整组 :

    Title

    Paragraph one

    Paragraph two

    使用v-else 指令来表示 v-if 的 else,v-else

    2020/03/24
  • vue项目用到的mock数据接口的两种方式菜鸟指南_接口基础入门

    1.使用devServer.before进行数据mock//通过配置devServer.before选项,设置url访问路径及response响应数据,进行mock数据。
    const { data } = require(‘./data.json’)
    // 引入json数据对象//vue.config.js配置文件中进行Vue CLI的配置
    module.e

    2020/03/23