陈同学
微服务
Accelerator
About
# Linux: 利用tr从文本中提取特定信息 今天偶遇 **tr** 命令,挺有趣,记录一下。 ## 小故事 先介绍个小场景。将项目打成Docker镜像时,对于后端Maven项目,可以利用 **pom.xml** 和插件来build特定版本的镜像,可对于前端项目来说,还是有所不便。下面看两个小例子。 **先看看普通maven项目pom.xml的配置** ```xml <groupId>org.utopiavip</groupId> <artifactId>helloworld</artifactId> <version>1.2.5</version> ``` 利用 **docker-maven-plugin** 插件build两个镜像,版本分别为 **1.2.5** 和 **latest** ,应用可以一直使用 **latest** 版本,有问题时可以切换到具体的版本。 ```xml <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <configuration> <imageTags> <imageTag>${project.version}</imageTag> <imageTag>latest</imageTag> </imageTags> </configuration> </plugin> ``` *注: 以上配置不全,仅作Demo* 通过 **${project.version}** 可以方便的将镜像版本与项目版本关联起来。 **再看看前端 package.json** 文件: ```json { "name": "HelloWorld", "version": "1.2.5", "description": "Hello World" } ``` 可以提取文件中的 **version** 作为镜像版本达到同样效果,因此偶遇了 **tr** 命令。 ## tr 命令 > tr: translate characters,字符串转换工具。下面命令的测试OS为Mac. **语法** > tr [OPTION] SET1[SET2] ``` -c:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换 -d:删除指令字符 -s:缩减连续重复的字符成指定的单个字符 ``` * **case1:** 提取 **package.json** 中 **version** 字段 ```shell # 输出 "version": "1.2.5", cat package.json | grep "\"version\"" #输出1.2.5 cat package.json | grep "\"version\"" | tr -cd '[0-9]|.' ``` 通过 **-c** 取反,即取不是0-9的数字和.的所有字符,再通过 **-d** 将其删除 * **case 2: ** 去重 ```shell # 输出haha echo haaaaahaa | tr -s a ``` * **case3:** 转换字符 ```shell # 输出 hellokitty echo helloworld | tr 'world' 'kitty' ``` * **case4:** 大小写转换 ```shell # 输出HelloWorld echo helloworld | tr h H | tr w W ``` 这里仅记录可能用到的常用功能。
本文由
cyj
创作,可自由转载、引用,但需署名作者且注明文章出处。
文章标题:
Linux: 利用tr从文本中提取特定信息
文章链接:
https://chenyongjun.vip/articles/62
扫码或搜索 cyjrun 关注微信公众号, 结伴学习, 一起努力