当前位置: 首页 > news >正文

Linux tr命令

参考资料

  1. 【 tr 】コマンド――テキストファイルの文字を置換する/削除する
  2. 【Linux】trコマンド使ってみた【trコマンド】

目录

  • 一. 基本语法
  • 二. 替换
    • 2.1 匹配模式进行替换
    • 2.2 只支持字符的替换
  • 三. 选项
    • 3.1 -d 删除指定字符
    • 3.2 -s 替换多个重复出现的字符为单个字符
    • 3.3 -c 取反


一. 基本语法

⏹用于对输入的文本进行字符转换或删除。它通常用来替换或删除字符,但只能对单个字符进行操作,不能处理正则表达式。

  • SET1:要替换或删除的字符集。

  • SET2

    • 将 SET1中的字符替换为 SET2 中的字符。若 SET2 省略,则默认删除 SET1 中的字符。
    • 💥注意:替换指的是字符的替换,不是汉字的替换。使用替换汉字的话,会造成乱码。
      建议使用更加强大的sed命令来替换汉字。
  • OPTION

    • -d:删除 SET1 中的字符,而不替换。
    • -s:替换多个重复出现的字符为单个字符。
    • -c:将 SET1 取反操作。
短选项长选项
-d–delete
-s–squeeze-repeats
-c–complement
tr [OPTION] SET1 [SET2]

二. 替换

2.1 匹配模式进行替换

⏹tr命令虽然不支持正则表达式进行替换,但是支持匹配模式替换字符。

$ echo "hello world" | tr 'a-z' 'A-Z'
HELLO WORLD
$ echo "12345你好" | tr '[1-3]' '*'
***45你好$ echo "12345你好" | tr '1|3' '*'
*2*45你好

2.2 只支持字符的替换

⏹只支持字符的替换,替换汉字的话,会出现乱码问题

# 替换汉字,结果出现乱码问题
fengyehong@ubuntu:~$ echo "你好 世界" | tr "世界" "WORLD"
W��好 WORLDD# 替换汉字建议使用更加强大的sed命令
fengyehong@ubuntu:~$ echo "你好 世界" | sed "s/世界/WORLD/"
你好 WORLD

三. 选项

3.1 -d 删除指定字符

⏹删除0-9的数字字符

fengyehong@ubuntu:~$ echo "hello 123 world" | tr -d '0-9'
hello  world

⏹删除\r字符,实现windows的CRLF换行符转换为linux的LF换行符

fengyehong@ubuntu:~$ cat info.txt
aaa
bbb
ccc
ddd# 查看换行符
fengyehong@ubuntu:~$ file info.txt
info.txt: ASCII text, with CRLF line terminators# 删除\r字符
fengyehong@ubuntu:~$ cat info.txt | tr -d '\r' > info2.txtfengyehong@ubuntu:~$ cat info2.txt
aaa
bbb
ccc
ddd
fengyehong@ubuntu:~$ file info2.txt
info2.txt: ASCII text

⏹echo命令指定后默认会添加一个换行符

  • 可以通过-n选项来避免换行符的添加
  • 还可以通过tr -d '\n'删除换行符
fengyehong@ubuntu:~$ echo "你好 世界"
你好 世界fengyehong@ubuntu:~$ echo "你好 世界" | tr -d '\n'
你好 世界fengyehong@ubuntu:~$fengyehong@ubuntu:~$ echo -n "你好 世界"
你好 世界fengyehong@ubuntu:~$

3.2 -s 替换多个重复出现的字符为单个字符

⏹替换多个空格为一个空格

fengyehong@ubuntu:~$ echo "hello   world"
hello   world
fengyehong@ubuntu:~$ echo "hello   world" | tr -s ' '
hello world

tr -s '\n':删除多个连续的换行符

fengyehong@ubuntu:~$ file info.txt
info.txt: ASCII text
fengyehong@ubuntu:~$
fengyehong@ubuntu:~$ cat info.txt
aaabbbcccdddfengyehong@ubuntu:~$ cat info.txt | tr -s '\n'
aaa
bbb
ccc
ddd

3.3 -c 取反

⏹删除1-5之外的所有字符

fengyehong@ubuntu:~$ echo "123456789FFFKK"
123456789FFFKK
fengyehong@ubuntu:~$
fengyehong@ubuntu:~$ echo "123456789FFFKK" | tr -dc '[1-5]'
12345fengyehong@ubuntu:~$
# 删除1到5之外的所有字符(换行符也被删除了)之后,通过printf进行打印的时候,再加上换行符
fengyehong@ubuntu:~$ echo "123456789FFFKK" | tr -dc '[1-5]' | xargs printf "%s\n"
12345

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CMake构建学习笔记16-使用VS进行CMake项目的开发
  • [论文笔记]ChatQA: Surpassing GPT-4 on Conversational QA and RAG
  • 【LLM多模态】文生视频评测基准VBench
  • django-admin自定义功能按钮样式
  • 数据结构之栈和队列的应用
  • 【物联网技术大作业】设计一个智能家居的应用场景
  • 树莓派Pico开发板简介
  • 【网络】高级IO——阻塞IO和非阻塞IO的实现
  • 【项目一】基于pytest的自动化测试框架———解读requests模块
  • 【App】React Native
  • STM32的寄存器深度解析
  • 关系数据库,集合运算符,关系运算符
  • 1-4微信小程序基础
  • 苹果系统(MacOS)中的Finder如何方便展现根目录
  • 多线程篇(其它容器- CopyOnWriteArrayList)(持续更新迭代)
  • css属性的继承、初识值、计算值、当前值、应用值
  • fetch 从初识到应用
  • HTML-表单
  • javascript从右向左截取指定位数字符的3种方法
  • JavaScript设计模式与开发实践系列之策略模式
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • mysql 数据库四种事务隔离级别
  • Objective-C 中关联引用的概念
  • PHP 的 SAPI 是个什么东西
  • Shell编程
  • Spark RDD学习: aggregate函数
  • Yeoman_Bower_Grunt
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 从tcpdump抓包看TCP/IP协议
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 普通函数和构造函数的区别
  • 前端性能优化——回流与重绘
  • 微信小程序实战练习(仿五洲到家微信版)
  • 学习ES6 变量的解构赋值
  • 云大使推广中的常见热门问题
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #### go map 底层结构 ####
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (175)FPGA门控时钟技术
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (笔试题)分解质因式
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (含笔试题)深度解析数据在内存中的存储
  • (回溯) LeetCode 40. 组合总和II
  • (十三)Flink SQL
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)SpringBoot3---尚硅谷总结
  • .gitignore文件---让git自动忽略指定文件
  • .NET C# 使用 iText 生成PDF
  • .Net Redis的秒杀Dome和异步执行
  • .NET 设计模式—简单工厂(Simple Factory Pattern)