网站首页 > 技术文章 正文
我很少用tr命令,这里记录一下简单的用法,以利于未来用到时快速查阅。
从man tr可以得到以下信息
- tr的英文全称是translate。
- tr命令有两个用途,用途一是对stdin的某些数据执行删除(delete)操作,用途二是对stdin的某些数据执行替换(replace)、转换(translate)或压缩(squeeze)操作。
tr的语法是: stdin | tr [选项] 字符集合1 字符集合2 。一般,字符集合1和字符集合2是映射关系,当二者不是一一对应映射的时候,会出现字符丢失的情况。当使用-d选项时,只用字符集合1,不用字符集合2。
例子1: 删除操作(使用-d选项)
# 把在stdin里找到的全部数字都删掉,然后输出stdout
root@hgdm:~# echo '1900 The best way out is always through 2000' | tr -d '0-9'
The best way out is always through
例子2: 替换操作(不使用任何选项)
# 把在stdin里的找到的全部小写字母转换(替换)为大写字母,然后输出到stdout
root@hgdm:~# echo 'The best way out is always through' | tr 'a-z' 'A-Z'
THE BEST WAY OUT IS ALWAYS THROUGH
root@hgdm:~# echo 'The best way out is always through' | tr [:lower:] [:upper:]
THE BEST WAY OUT IS ALWAYS THROUGH
# 把在stdin里的找到的全部数字转换(替换)为空格,然后输出到stdout
root@hgdm:~# echo '1900 The best way out is always through 2000' | tr '0-9' ' '
The best way out is always through
例子3: 压缩操作(使用-s选项)
# 将stdin里找到的多个连续a压缩为一个a
root@hgdm:~# echo 'aaabbb,aaabbb,aaabbb,aaabbb' | tr -s 'a'
abbb,abbb,abbb,abbb
# 将stdin里找到的多个连续空格压缩为一个空格
root@hgdm:~# echo ' The best way out is always through ' | tr -s ' '
The best way out is always through
下面示例将多个连续的换行符压缩为一个换行符
root@hgdm:~/examples# cat blanks.txt
the
best
way
out
is
always
through
root@hgdm:~/examples# cat blanks.txt | tr -s '\n'
the
best
way
out
is
always
through
例子4: 补集(使用-c选项)
# -c '0-9'指非数字集合: '0-9'是数字集合,数字集合的补集是非数字集合
# -c [:digit:]指非数集合: [:digit:]是数字集合,数字集合的补集是非数字集合
# -d -c '0-9'和-d -c [:digit:]: 用于删除stdin里的非数字,字母、空格、换行符、标点符号等都属于非数字,都会被删除
root@hgdm:~# echo '1900 The best way out is always through 2000 ,#@^&&**&' | tr -d -c '0-9'
19002000
root@hgdm:~# echo '1900 The best way out is always through 2000 ,#@^&&**&' | tr -d -c [:digit:]
19002000
PHP里有一个类似tr命令的函数strtr()
例如,
<?php
$inputStr = '伟大,渺小;真诚,虚伪;尊重,歧视;善良,邪恶。';
$searchList = ['渺小', '虚伪', '歧视', '邪恶'];
$replaceList = array_fill(0, count($searchList), '*');
$trans = array_combine($searchList, $replaceList);
$outputStr = strtr($inputStr, $trans);
print_r([
'inputStr' => $inputStr,
'searchList' => $searchList,
'replaceList' => $replaceList,
'trans' => $trans,
'outputStr' => $outputStr
]);
echo $outputStr . "\n";
这段代码的输出结果为:
- 上一篇: 第14章 在这看颜值的时代,Django的布局也要美化
- 下一篇: linux基础命令之tr命令
猜你喜欢
- 2024-11-25 宽禁带半导体检测加工一站式行业解决方案
- 2024-11-25 快速上手tr命令
- 2024-11-25 TD Securities:维持特许通讯公司(CHTR)为持有评级,目标价为560.00美元
- 2024-11-25 TD Securities:维持特许通讯公司(CHTR)为持有评级,目标价为495.00美元
- 2024-11-25 HTML table表格 固定表头 tbody加滚动条
- 2024-11-25 高达档案0013——提坦斯TR计划,TR-5“加普兰”
- 2024-11-25 TD Securities:上调特许通讯(CHTR)为买入评级,目标价为800.00美元
- 2024-11-25 高考文化体育艺术类词汇
- 2024-11-25 web前端:vue源码解析,vue-cli父子组件传递模板
- 2024-11-25 第16章 万万没想到Django的共享模板是这样的,你想到没?
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-