tr命令

语法

tr [OPTION]... SET1 [SET2]

常用参数

-s: squeeze-repeats,用SET1指定的字符来替换对应的重复字符 

删除空白行:
[root@iZ8vbe2hi0mvzsp1mkqcfdZ sh]# cat b.txt
1

2

3
[root@iZ8vbe2hi0mvzsp1mkqcfdZ sh]# cat b.txt |tr -s '\n' 
1
2
3

-d:delete,删除SET1中指定的所有字符,不转换(delete characters in SET1, do not translate)

# echo "ABCdef123456"|tr -d [a-z][A-Z]
123456

-t:truncate,将SET1中字符用SET2对应位置的字符进行替换,一般缺省为-t

大小写转换或者字符替换:

# echo "abc123def456" |tr -t [def] [XYZ]

abc123XYZ456

-c:complement,用SET2替换SET1中没有包含的字符

常用参数

\NNN 八进制值的字符 NNN (1 to 3 为八进制值的字符)
\\ 反斜杠
\a Ctrl-G 铃声
\b Ctrl-H 退格符
\f Ctrl-L 走行换页
\n Ctrl-J 新行
\r Ctrl-M 回车
\t Ctrl-I tab键
\v Ctrl-X 水平制表符
CHAR1-CHAR2 从CHAR1 到 CHAR2的所有字符按照ASCII字符的顺序
[CHAR*] in SET2, copies of CHAR until length of SET1
[CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0
[:alnum:] 所有的字母和数字
[:alpha:] 所有字母
[:blank:] 水平制表符,空白等
[:cntrl:] 所有控制字符
[:digit:] 所有的数字
[:graph:] 所有可打印字符,不包括空格
[:lower:] 所有的小写字符
[:print:] 所有可打印字符,包括空格
[:punct:] 所有的标点字符
[:space:] 所有的横向或纵向的空白
[:upper:] 所有大写字母


实例:

1.把数列变成横排

[root@iZ8vbe2hi0mvzsp1mkqcfdZ sh]# cat b.txt 

1
2
3
[root@iZ8vbe2hi0mvzsp1mkqcfdZ sh]# vim b.txt 
[root@iZ8vbe2hi0mvzsp1mkqcfdZ sh]# cat b.txt |tr '\n' '*'

1*2*3*

2.删除空行并变成横排

[root@iZ8vbe2hi0mvzsp1mkqcfdZ sh]# cat b.txt 
1

2

3
[root@iZ8vbe2hi0mvzsp1mkqcfdZ sh]# cat b.txt |tr -d '\n' 

123

3.实例3

[root@iZ8vbe2hi0mvzsp1mkqcfdZ sh]# cat b.txt 
Monday   09:00
Tuesday  09:10
Wednesday 10:11
Thursday  11:30
Friday   08:00
Saturday  07:40
Sunday   10:00
[root@iZ8vbe2hi0mvzsp1mkqcfdZ sh]# cat b.txt |tr -c [A-Z][a-z] '#'|tr -s '#' |tr '#' '\n'
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday

Sunday

PS:

# cat b.txt |tr -c [A-Z][a-z] '#'
Monday#########Tuesday########Wednesday#######Thursday########Friday#########Saturday########Sunday#########

# cat b.txt |tr -c [A-Z][a-z] '#'|tr -s '#'

Monday#Tuesday#Wednesday#Thursday#

# cat b.txt |tr -c [A-Z][a-z] '#'|tr -s '#' |tr '#' '\n'
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday

Sunday

\n是换行,\t是补齐,如果把\n换车\t就是这样

# cat b.txt |tr -c [A-Z][a-z] '#'|tr -s '#' |tr '#' '\t'
Monday Tuesday Wednesday Thursday Friday Saturday Sunday






<think>嗯,用户想了解Linux中的tr命令的功能和用法。首先,我需要回顾一下tr命令的基本作用。trtranslate的缩写,主要用于字符转换、删除和挤压操作。记得它通常从标准输入读取数据,处理后再输出到标准输出,所以常常和其他命令结合使用,比如通过管道。接下来,用户可能需要具体的例子来理解这些功能。比如,大小写转换,删除特定字符,替换字符,还有挤压连续重复字符。这些例子应该能帮助用户直观地看到tr的用途。我需要确保每个示例都简洁明了,并且符合语法要求,比如使用单引号包裹字符集,注意字符顺序等。然后,用户可能想知道常用的选项,比如-d、-s、-c这些。需要解释每个选项的作用,并给出对应的示例。比如,-d选项用于删除,-s用于挤压重复字符,-c则是补集操作。这些选项的组合使用可以解决很多文本处理的问题。 另外,注意事项也很重要。比如,tr不能直接处理文件,而是通过输入重定向或者管道;字符集是按字符处理,不是字符串;还有SET1和SET2的长度问题。这些点用户可能会在使用中遇到问题,提前说明能避免他们的困惑。现在,考虑用户可能的实际应用场景。比如处理日志文件时删除不必要的空格,或者将文本统一转换为大写方便分析。这些场景能帮助用户更好地将tr命令应用到实际工作中。同时,生成相关的问题可以引导用户进一步探索,比如性能优化、与其他命令的比较,或者更复杂的替换案例。 需要检查引用是否正确应用。用户提供的引用中有关于tr命令的详细说明,比如删除字符、转换大小写、挤压连续字符等,这些都需要在回答中正确引用。比如在解释删除功能时引用[^2],在选项说明时引用[^3][^4]。最后,确保回答结构清晰,分点列出功能和示例,使用代码块展示命令,并自然融入引用标识。同时,相关问题的生成要围绕用户可能感兴趣的方向,比如高级用法、与其他工具的比较,或者实际案例,这样能帮助他们深入学习。</think>### Linux tr命令的功能及用法详解 `tr`(translate)是Linux/Unix系统中用于**字符转换、删除和挤压**的文本处理工具。它通过标准输入读取数据,处理后输出到标准输出,常与管道符(`|`)结合使用[^3][^4]。 --- #### 一、核心功能 1. **字符替换** ```bash echo "hello" | tr 'a-z' 'A-Z' # 输出 HELLO ``` 将小写字母替换为大写字母[^3]。 2. **删除字符** ```bash echo "a1b2c3" | tr -d '0-9' # 输出 abc ``` 删除所有数字(`-d`选项)[^2][^4]。 3. **挤压连续重复字符** ```bash echo "aaabbbccc" | tr -s 'a-z' # 输出 abc ``` 将连续重复字符压缩为单个字符(`-s`选项)[^3][^4]。 4. **补集操作** ```bash echo "abc123" | tr -cd 'a-z' # 输出 abc(保留字母,删除其他字符) ``` `-c`选项表示对字符集取反[^4]。 --- #### 二、常用选项 | 选项 | 作用 | 示例 | |------|------|------| | `-d` | 删除指定字符 | `tr -d ' '` 删除空格 | | `-s` | 压缩重复字符 | `tr -s '\n'` 合并空行 | | `-c` | 匹配补集 | `tr -cd 'A-Za-z'` 仅保留字母 | --- #### 三、典型应用场景 1. **清理文本中的空格** ```bash echo "Hello World" | tr -s ' ' # 输出 "Hello World" ``` 2. **文件格式转换** ```bash cat file.txt | tr '\t' ',' # 将制表符替换为逗号 ``` 3. **删除非打印字符** ```bash echo "Text^M" | tr -d '\r' # 删除回车符(^M) ``` --- #### 四、注意事项 1. `tr`仅处理**单字符替换**,不支持正则表达式或多字符替换。 2. 若`SET1`比`SET2`长,`SET2`会循环填充至与`SET1`等长[^4]。 3. 处理文件时需配合输入重定向: ```bash tr 'a-z' 'A-Z' < input.txt ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值