tr命令解析_学习笔记

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

时间:2017.11.15

作者:李强

参考:man,info,magedu讲义

声明:以下英文纯属个人翻译,英文B级,欢迎纠正,盗版不纠,才能有限,希望不误人子弟为好。

1、使用目的与场景

  把STDIN的字符进行转换,压缩,删除的操作,然后输出到STDOUT上,具体案例在什么实际工作哪里能用到因为还没有参加工作,所以先不揣测,但是应该可以对文本进行操作。应该类似于windows下的查找替换的功能。

2、官方说明

  Translate, squeeze, and/or delete characters

3、写在前面

  tr的使用主要还是在格式上的理解,如何去更简洁的表达你想要修改的字符集,选择合适的选项,达到你想要字符集修改的效果。选项一般为单词的简写取首,加上长字节利于自己记忆,然后就是要理解这个单词的具体用法,这就要自己摸索着时间,将别人讲的转化为自己的理解,看八百遍讲义不敲不琢磨,除非你天才。

4、修改文件及涉及的环境变量

     

5、用法

   

1
2
3
4
5
6
7
  tr  [OPTION]... SET1 [SET2]
   #选项的理解
   #当没有选项时,默认执行-t转换操作,-t 可以省略不写,这时不能只有set1没有set2,要成对。
      -c -C  --complement求补,求SET1的补集(所有不是SET1字符的字符)
      -d     --delete 删除,删除SET1的字符不进行转化,那么SET2就不用添加了,
      -s    --squeeze-repeats 挤压重复字符,
      -t    --truncate-set1 将第一个字符集对应字符转化为第二字符集 对应的字符

参数的格式问题:

这里感觉好多参数的格式都是基于shell可以识别的一种通配符的格式,并非正则表达式(需要正则表达式 去解释),比如说[0-9][a-z],但是这种有兼容性问题,还是用这些字符类表达比较好[:alpha:][:digit:] 

\r \n \NNN 这种风格的,还有^,

    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  正常字符表示正常字符
       CHAR1-CHAR2  all characters from CHAR1 to CHAR2  in  ascending order       
        [CHAR*]   用在SET2,复制CHAR字符直到长度和SET1相同
        [CHAR*N]  代表有N个重复的CHAR字符,N如果是0开头就是8进制,不是就是10进制。
      #参数可以是转义字符
        \NNN   字符用八进制表示可以去查看下ASCII编码然后对应转化为八进制
        \\     表示转义字符本身
        \a     audible BEL
        \b     backspace
        \f     form feed
        \n     回车
        \r     换行
        \t     水平tab
        \ v      垂直tab
        #字符类有哪些?以下下是预定义类。
       [:digit:] 所有数字
       [:lower:] 所有小写
       [:upper:] 所有大写
       [:alpha:] 所有字母
       [:alnum:] 所有字母和数字
       [:punct:] 标点符号
       [:space:] 所有水平和垂直空白
       [:graph:] 打印字符,不包括空格
       [:print:] 可打印字符,包括空格
       [:cntrl:] 控制字符,表示哪些不晓得?
       [:Xdigit:] 所有16进制数字


  [=C=]是个最近的发明,旨在扩展到所有非字母字符,但并不是所有GNU tr都支持,这个回头试试,看能不能匹配匹配中文。

  tr set1 set2,当set1和set2的字符长度不同时什么情况

  当set1小于set2 比如abc和1234,那么只会讲stdin中的abc替换为123,4就被忽略了

  当set1大于set2 比如abcd和123,那么我输入abcdefg,就会被转换成1233efg了,它会拿set2的最后一个字符去替换set1中没有匹配到的,比如abcde和123,那么输入abcdefg就会被转成12333fg。

     比如这里 abc 和空格, 这里会转成3个空格。  

  所以一般情况下要注意set1和set2要保持相同

  学命令就像学文言文,给你说了文言文格式,但是要翻译的好,还是要看你的语文功底了。

实际的案例:(根据实际当中的操作不定期补充

1、ss -nt |tail -n +2 |tr -s " " ":"| cut -d ":" -f 4

1
2
3
4
5
6
7
8
9
[root@centos6  /app ] #ss -nt
State      Recv-Q Send-Q Local Address:Port  Peer Address:Port 
ESTAB      0      0   172.18.23.6:22    172.18.1.50:1696  
ESTAB      0      0   172.18.23.6:22    172.18.1.50:12053 
ESTAB      0      0   172.18.23.6:22    172.18.1.50:12226 
[root@centos6  /app ] #ss -nt |tail -n +2 |tr -s " " ":"| \
cut  -d  ":"  -f 4 |  uniq  -c
    3 172.18.23.6
[root@centos6  /app ] #

这里是把空格压缩然后抓换为冒号。

这里的-s相当于-st,当有set1和set2存在时,t是默认值可以不写。

2、echo 12345|tr '0-9' '987654321'



本文转自 lajifeiwomoshu 51CTO博客,原文链接:http://blog.51cto.com/lajifeiwomoshu/1982127

相关文章
|
28天前
|
网络协议 开发工具 C语言
Jetson错误(二):wget命令提示无法解析主机地址的问题解决
对于解决在NVIDIA Jetson平台上使用wget命令时出现的无法解析主机地址的问题,提供了两种解决方法:一种是临时修改DNS服务器为Google的公共DNS,另一种是永久修改DNS设置。
48 5
|
2月前
|
存储 缓存 NoSQL
Redis 过期删除策略与内存淘汰策略的区别及常用命令解析
Redis 过期删除策略与内存淘汰策略的区别及常用命令解析
67 0
|
3月前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
127 3
|
3月前
|
数据采集 运维 监控
运维笔记:流编辑器sed命令用法解析
运维笔记:流编辑器sed命令用法解析
56 5
|
3月前
|
Linux 数据安全/隐私保护 Perl
解锁Linux高手秘籍:文件操作+命令解析大揭秘,面试场上让你光芒万丈,技术实力惊艳四座!
【8月更文挑战第5天】Linux作为服务器与嵌入式系统的基石,其文件管理和命令行操作是技术人员必备技能。本文从文件操作和基础命令两大方面,深入浅出地解析Linux核心要义,助你在面试中脱颖而出。首先探索文件系统的树状结构及操作,包括使用`ls -la`浏览文件详情、`touch`创建文件、`rm -r`慎删目录、`cp`与`mv`复制移动文件、以及利用`find`搜索文件。接着掌握命令行技巧,如用`cat`、`more`和`less`查看文件内容;借助`grep`、`sed`与`awk`处理文本;运用`ps`、`top`和`kill`管理进程;并通过`chmod`和`chown`管理文件权限。
76 8
|
3月前
|
运维 Ubuntu Shell
Docker命令宝典:解锁容器化技术的无限可能,从镜像管理到容器操作,全面解析与实战指南!
【8月更文挑战第3天】Docker简化了应用的部署与运行,掌握其基本命令对开发者和运维人员至关重要。通过`docker images`可查看本地镜像;使用`docker pull`拉取如最新版Ubuntu镜像;`docker rmi`用于删除不再需要的镜像。运行容器可通过`docker run`命令,结合`-it`等选项提供交互式环境。`docker ps`显示运行中的容器,加上`-a`则列出所有容器。`docker stop`和`docker start`分别用于停止和重启容器,而`docker rm`则删除容器。
78 5
|
4月前
|
Linux Docker 容器
ip addr命令解析
ip addr命令解析
452 1
|
3月前
|
运维 Rust 监控
Linux高效运维必备:fd命令深度解析,文件描述符管理从此得心应手!
【8月更文挑战第23天】本文介绍了一款名为fd的命令行工具,该工具基于Rust语言开发,旨在以更直观的语法和更快的速度替代传统的`find`命令。通过本文,您可以了解到如何安装fd以及一些基本用法示例,比如使用正则表达式匹配文件名、排除特定目录等。此外,文章还展示了如何结合`ps`和`lsof`命令来查找特定文件并显示其文件描述符,从而帮助您更好地管理和监控Linux系统中的文件与进程。
125 0
|
4月前
|
Linux
《解析 Linux 命令:systemd-delta》
`systemd-delta`: 解析Linux服务配置差异。概览: 显示服务单元文件与默认配置的对比,助于配置问题排查与系统审计。特点: 清晰展示修改点,涵盖启动选项等。示例: `systemd-delta [--plain] <service>`. 注意: 理解默认配置,谨慎修改,定期检查。掌握此命令,深化系统服务配置洞察,优化Linux管理。#Linux #systemd-delta
|
4月前
|
存储 监控 Linux
stdbuf命令在Linux中的深度解析
`stdbuf`是Linux工具,用于控制命令的stdin、stdout和stderr的缓冲模式。它可以设置为无缓冲、行缓冲或块缓冲,以优化数据处理和实时性。例如,`stdbuf -o0 cmd`禁用cmd的输出缓冲,`-oL`则按行缓冲。在需要实时监控或高效处理大量数据时,选择合适的缓冲模式至关重要。注意,过度使用无缓冲可能影响性能,并非所有系统都支持`stdbuf`。

推荐镜像

更多