tr命令笔记

news2024/10/3 6:34:33

        tr 是Unix命令行专家工具箱中的一件万能工具。它可用于编写优雅的单行命令。 tr 可以对
来自标准输入的内容进行字符替换、字符删除以及重复字符压缩。 tr 是translate(转换)的简写,
因为它可以将一组字符转换成另一组字符。
        tr 只能通过 stdin (标准输入)接收输入(无法通过命令行参数接收)。其调用格式如下: 

tr [options] set1 set2 


        来自 stdin 的输入字符会按照位置从 set1 映射到 set2 ( set1 中的第一个字符映射到 set2
中的第一个字符,以此类推),然后将输出写入 stdout (标准输出)。 set1 和 set2 是字符类或 
字符组。如果两个字符组的长度不相等,那么 set2 会不断复制其最后一个字符,直到长度与 set1
相同。如果 set2 的长度大于 set1 ,那么在 set2 中超出 set1 长度的那部分字符则全部被忽略。 

实例 

  • 将输入中的字符由大写转换成小写

可以使用下面的命令: 

echo "HELLO WHO IS THIS" | tr 'A-Z' 'a-z'




         'A-Z' 和 'a-z' 都是字符组。我们可以按照需要追加字符或字符类来构造自己的字符组。 
'ABD-}' 、 'aA.,' 、 'a-ce-x' 以及 'a-c0-9' 等均是合法的集合。定义集合也很简单,不
需要书写一长串连续的字符序列,只需要使用“起始字符-终止字符”这种格式就行了。这种写
法也可以和其他字符或字符类结合使用。如果“起始字符-终止字符”不是有效的连续字符序列,
那么它就会被视为含有3个元素的集合(起始字符、-和终止字符)。你也可以使用像 '\t' 、 '\n'
这种特殊字符或其他ASCII字符。 

  •  加解密

        在 tr 中利用集合的概念,可以轻松地将字符从一个集合映射到另一个集合中。

       下面是一个用 tr 进行数字加密和解密的简单例子,首先是加密: 

echo 12345 | tr '0-9' '9876543210'

得到加密的结果是:87654

接下来解密: 

echo 87654 | tr '9876543210' '0-9'

 得到结果是:12345

        tr 命令可以用来加密。ROT13是一个著名的加密算法。在ROT13算法中,字符会被移动13
个位置,因此文本加密和解密都使用同一个函数: 

echo "tr came, tr saw, tr conquered." | tr 'a-zA-Z' 'n-za-mN-ZA-M'

输出如下: 
ge pnzr, ge fnj, ge pbadhrerq. 


对加密后的密文再次使用同样的ROT13函数,我们可以采用: 

echo ge pnzr, ge fnj, ge pbadhrerq. | tr 'a-zA-Z' 'n-za-mN-ZA-M'

  输出如下: 
tr came, tr saw, tr conquered. 


tr 还可以将制表符转换成单个空格: 

tr '\t' ' ' < file.txt 



用tr删除字符 


        tr 有一个选项 -d ,可以通过指定需要被删除的字符集合,将出现在 stdin 中的特定字符清
除掉: 

cat file.txt | tr -d  '[set1]' 
echo "Hello 123 world 456" | tr -d '0-9'

上面命令得到的结果是:
Hello world 


字符组补集 


        可以利用选项 -c 来使用 set1 的补集。下面的命令中, set2 是可选的: 

tr -c [set1] [set2]

 
        如果只给出了 set1 ,那么 tr 会删除所有不在 set1 中的字符。如果也给出了 set2 , tr 会将不
在 set1 中的字符转换成 set2 中的字符。如果使用了 -c 选项, set1 和 set2 必须都给出。如果 -c
与 -d 选项同时出现,你只能使用 set1 ,其他所有的字符都会被删除。 


下面的例子会从输入文本中删除不在补集中的所有字符:

echo hello 1 char 2 next 4 | tr -d -c '0-9 \n' 

得到结果:
1 2 4 

下面命令实例将不在 set1 中的字符替换成空格: 

echo hello 1 char 2 next 4 | tr -c '0-9' ' ' 


用tr压缩字符 串


tr 命令能够完成很多文本处理任务。例如,它可以删除字符串中重复出现的字符。基本实现
形式如下: 
 

tr -s '[需要被压缩的一组字符]' 


 
如果你习惯在点号后面放置两个空格,你需要在不删除重复字母的情况下去掉多余的空格: 

echo "GNU is       not     UNIX. Recursive   right ?" | tr -s ' '

  • tr 命令还可以用来删除多余的换行符: 
cat multi_blanks.txt | tr -s '\n'


字符类 


        tr 可以将不同的字符类作为集合使用,所支持的字符类如下所示。 

  • alnum :字母和数字。 
  • alpha :字母。 
  • cntrl :控制(非打印)字符。 
  • digit :数字。 
  • graph :图形字符。 
  • lower :小写字母。 
  • print :可打印字符。 
  • punct :标点符号。 
  • space :空白字符。 
  • upper :大写字母。 
  • xdigit :十六进制字符。 

可以按照下面的方式选择所需的字符类: 

tr [:class:] [:class:] 


例如: 
 

tr '[:lower:]' '[:upper:]' 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/347730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows 11 + WSL(ubuntu 20.04) + CLion(2022.3) 编译OpenJDK12

编译OpenJDK12 目录编译OpenJDK12前言一、下载OpenJDK源码二、编译OpenJDK参考https://openjdk.org/groups/build/doc/building.html1&#xff1a;安装编译所需的组件2&#xff1a;执行编译命令3&#xff1a;验证编译结果三、在Clion中调试OpenJDK源码1&#xff1a;Clion中配置…

R语言GD包地理探测器分析时报错、得不到结果等情况的解决方案

本文介绍在利用R语言的GD包&#xff0c;实现自变量最优离散化方法选取与执行、地理探测器&#xff08;Geodetector&#xff09;操作时&#xff0c;出现各类报错信息、长时间得不到结果等情况的解决方案。 在之前的文章R语言GD包基于栅格图像实现地理探测器与连续参数的自动离散…

深度解读Webpack中的loader原理

一、前言 webpack 是一个现代 JavaScript 应用的静态模块打包器。那么 webpack 是怎样实现不同种类资源模块加载的呢&#xff1f; 没错就是通过 loader。loader 用于对模块的源代码进行转换。loader 可以使你在 import 或加载模块时预处理文件。 我们带着下面几个问题&#…

css中的盒子模型

1、盒子模型&#xff1a;CSS中规定盒子分别由&#xff1a;内容区域&#xff08;content&#xff09;、内边距区域&#xff08;padding&#xff09;、边框区域&#xff08;border&#xff09;、外边距区域&#xff08;margin&#xff09;构成。 2、盒模型分为IE盒模型和W3C标准…

内存泄漏检测组件 -- hook

目录 hook malloc与free出现的问题 builtin_return_address(N) C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 hook malloc与free出现的问题 #define _GNU_SOURCE #include <stdio.h> #include <dlfcn.h> #include <stdlib.h> /****…

Android Studio多渠道打包及自动化构建

Android 有不同的应用市场&#xff0c;也就是不同的渠道&#xff0c;需要为每个应用市场打一个安装包&#xff0c;但主要的代码是一样的&#xff0c;可能部分资源不一样&#xff0c;部分代码不一样&#xff0c;如果每个渠道都需要修改&#xff0c;然后打包&#xff0c;非常耗时…

思科三层交换机配置

三层交换机是什么为什么会有三层交换机三层交换机的工作原理三层交换机的应用1.三层交换机是什么 三层交换机就是具有部分路由器功能的交换机&#xff0c;工作在OSI网络标准模型的第三层&#xff1a;网络层。三层交换机的最重要目的是加快大型局域网内部的数据交换&#xff0c;…

操作系统-处理机调度

1.处理机调度的概念、层次1.1调度的基本概念制定某种规则来决定处理任务的顺序。1.2调度的三个层次高级调度&#xff08;作业调度&#xff09;中级调度&#xff08;内存调度&#xff09;进程的挂起态与七状态模型低级调度&#xff08;进程调度&#xff09;小结2.进程调度的时机…

VMware安装Linux虚拟机后忘记root密码处理方法

OS版本&#xff1a;Red Hat 7.7 问题说明&#xff1a; 之前用VMWare安装了一台Linux虚机&#xff0c;由于长期没使用&#xff0c;导致忘记了root密码。所以需要修改root密码。 Root密码修改 现将修改root密码的操作步骤记录如下。 1.启动虚拟机&#xff0c;出现启动倒计时…

2023年,智能家居老板如何低成本多开10家店?

作者 | 启明 编辑 | 小沐 出品 | 智哪儿 zhinaer.cn2023年智能家居老板需要一些什么样的新思维来助力业绩增长呢&#xff1f;智哪儿从今天起推出系列观察文章与各位老板共勉。在《三体》电视剧中&#xff0c;三体人在乱纪元通过“脱水”来延续生命&#xff0c;在恒纪元则通过“…

mac 安装、配置、卸载mysql

文章目录mac 安装、配置、卸载mysql安装下载mysql dmg包安装mysql服务启动mysql服务配置系统环境变量配置修改默认密码配置运行远程连接配置my.cnf文件卸载mac 安装、配置、卸载mysql 安装 下载mysql dmg包 下载地址&#xff1a;https://downloads.mysql.com/archives/commu…

面试必问:进程和线程的区别(从操作系统层次理解)

1.什么是进程&#xff1f;为什么要有进程&#xff1f; 进程有一个相当精简的解释&#xff1a;进程是对操作系统上正在运行程序的一个抽象。 这个概念确实挺抽象&#xff0c;仔细想想却也挺精准。 我们平常使用计算机&#xff0c;都会在同一时间做许多事&#xff0c;比如边看…

springboot(6)之前端传递参数的方式 普通 集合 数组

实体类传递 首先我们在后端定义一个实体类&#xff0c;通过lombok插件重写 有参 无参 get set toString 方法, 然后前端发送数据&#xff0c;后端就会自动收到&#xff0c;然后属性填写 后端代码如下 AllArgsConstructor Data NoArgsConstructor public class role …

【Pygame实战】有趣又益智的游戏:看图猜四字成语,最后一个几乎没人会,哪位学霸来猜猜?这么难的嘛?(猜个锤子)

导语 看图猜成语&#xff0c;是考验一个人的反应能力&#xff0c;也考验一个人的右脑思维。 据说越聪明的人&#xff0c;这道题的完成率越高。你想试一试嘛&#xff1f;今天就给你这次机会啦&#xff01; 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码…

RocketMQ5.0.0消息存储<四>_刷盘机制

目录 一、刷盘概览 二、Broker刷盘机制 1. 同步刷盘 2. 异步刷盘 1)&#xff1a;未开启堆外内存池 2)&#xff1a;开启堆外内存池 三、参考资料 一、刷盘概览 RocketMQ存储与读写是基于JDK NIO的内存映射机制&#xff08;MappedByteBuffer&#xff09;&#xff0c;消息存储…

深度解析 JavaScript 严格模式:利弊长远的考量

前言 ECMAScript 5首次引入严格模式的概念。严格模式用于选择以更严格的条件检查JavaScript代码错误&#xff0c;可以应用到全局&#xff0c;也可以应用到函数内部。 严格模式的好处是可以提早发现错误&#xff0c;因此可以捕获某些 ECMAScript 问题导致的编程错误。 理解严格…

前端vue实现系统拦截跳转外链并进入跳转询问界面

跳转询问界面如下图所示&#xff1a; 给自己挖坑的实现方式&#xff0c;最终解决方案请看最底下 思路&#xff1a;正常情况下我们有2种方式跳转外链 第一种非a标签&#xff0c;我们手动添加事件进行跳转 <div class"dingdan public-padding p-item" click&quo…

Python 条件语句是什么?

Python条件语句是通过一条或多条语句的执行结果&#xff08;True或者False&#xff09;来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空&#xff08;null&#xff09;值为true&#xff0c;0 或者 null为false。 Python 编程…

家政服务小程序实战教程12-详情页

我们的家政服务小程序已经完成了首页和分类展示页面的开发&#xff0c;接下来就需要开发详情页了。在详情页里我们展示我们的各项服务内容&#xff0c;让用户可以了解每项家政服务可以提供的内容。 低码开发不像传统开发&#xff0c;如果开发详情页需要考虑每个字段的类型&…

【TPC证书报错--箱码校验失败】

证书管理—>交易证书管理—>编辑&#xff0c;然后就报错了。 1.这个报错&#xff0c;一般是指一个箱码&#xff0c;【产出/报工】接口失败了&#xff0c;但是【成品入库】和【成品出口】成功了。 2.大概就是【成品出库】接口&#xff0c;会传【销售单号】和【箱码】2个…