Linux中的TR命令与示例
TR(转换)命令用于Linux主要用于翻译和删除字符。
它可用于将大写转换为小写,挤压重复字符和删除字符。
TR命令需要两组字符进行转换,也可以使用UNIX管道用于高级翻译的其他命令。
在本教程中,我们通过一些示例了解如何在Linux操作系统中使用TR命令。
TR命令和语法
TR命令使用以下语法,该语法需要两组字符来操作。
tr [options] "SET1" "SET2"
设置的是一组字符。
我们使用解释的序列,列出了一些序列。
\NNN
->八进制值为NNN的字符(1到3个八进制数字)\\
->反斜杠\n
->新行\r
->回车\t
->水平选项卡tab[:alnum:]
->所有字母和数字[:alpha:]
->所有字母[:blank:]
->所有水平空白[:cntrl:]
->所有控制字符[:digit:]
->所有数字[:小写:]
->所有小写字母[:大写:]
->所有大写字母
可以应用以下TR语法的变体:
echo "something to translate" | tr "SET1" "SET2"
tr "SET1" "SET2" < file-to-translate
tr "SET1" "SET2" < file-to-translate > file-output
TR选项是:
-c
,-c
,- propplents
- >补充'set1""-d",- delete
- >删除set1中的字符.-s
- 挤压重复填写 - >替换在Set1中列出的重复字符的每个输入序列,单一发生该字符。
1)将小写转换为大写
我们可以使用TR以便转换,即将句子或者单词从小写转换为大写或者虎钳。
我们可以是[:下部:** [:Upper:**
或者`"a-z""a-z""将小写转换为大写。
以下示例将小写字符转换为大写字母,并打印标准输出的结果。
$sudo echo "change me to capital letter" | tr [:lower:] [:upper:] CHANGE ME TO CAPITAL LETTER
此示例转换名为"input.txt"的文件的内容,并仅在控制台的标准输出中打印结果。
$sudo cat input.txt Can you see how command can be wonderful? $sudo tr "a-z" "A-Z" < input.txt CAN YOU SEE HOW COMMAND CAN BE WONDERFUL? $sudo cat input.txt Can you see how command can be wonderful?
在下文中,"input.txt"中的内容将被转换为大写字母并保存到名为"output.txt"的文件
$sudo tr "a-z" "A-Z" < input.txt > output.txt $sudo cat output.txt CAN YOU SEE HOW COMMAND CAN BE WONDERFUL?
注意:SED命令具有类似于TR的"y"选项",它在"SET2"中的"SET1"中的所有字符替换为"set1"。
2)删除字符
"-d""选项用于删除已指定的所有字符出现。
让我们使用示例查看不同的"d"选项。
以下命令将从第一个集中删除所有字符的字符"CAWE"。
$sudo echo "Can you see how command can be wonderful?" | tr -d "cawe?" Cn you s ho ommnd n b ondrful
以下命令将从句子中删除所有数字:
注意[:Digit:**
代表所有数字字符。
$sudo echo "Remove my id number 567893" | tr -d [:digit:]
输出
Remove my id number
下面的命令将从文本文件中删除NewLines
$sudo tr -d '\n' < file1.txt or $sudo tr -d '2' < file1.txt
3)删除非匹配字符(补充)
使用-c
选项,我们可以用另一组字符替换非匹配字符。
在以下示例中,它将所有非匹配字符的字符"BC123D566E"替换为"T"。
$sudo echo "Abc123d56E" | tr -c 'A' 't' Atttttttttt
我们要从一组字符中提取数字的另一个实时示例:
$echo "My year of birth is 1975" | tr -cd [:digit:]
Output 1975
4)将空格转换为标签
我们可以拥有TR命令将所有空格转换为选项卡,用[:空间:**
和\ t
应用tr。
检查以下示例
$sudo echo "I need more space" | tr [:space:] '\t'
Output I need more space
5)挤压角色的重复
使用"-s""选项,我们可以挤压重复发生的人物。
在以下示例中,重复空间(连续)被转换为单个空间。
$sudo echo "I am so wide" | tr -s " " I am so wide
或者
$sudo echo "I am so wide" | tr -s '[:space:]' '#' I am so wide
其中我们在所有单个空间中删除连续空格并放置字符'#'。
sudo echo "I am so wide" | tr -s '[:space:]' '#' I#am#so#wide#
6)转换为单个换行符
以下将每个空间序列转换为单个换行符。
注意[:Alpha:**
代表所有字母。
$sudo cat file Can you see how command can be wonderful $sudo cat file | tr -s "[:alpha:]" "\n" Can you see how command can be wonderful $
7)从文件中生成一个唯一单词列表
这是一个非常有用的实际示例,我们可以使用TR从文件中生成唯一单词。
$sudo cat file unique1 unique1 unique2 unique3 unique4 unique4 $sudo cat file | tr -cs "[:alnum:]" "\n" | sort | uniq -c | sort -rn 2 unique4 2 unique1 1 unique3 1 unique2 $
8)编码使用腐烂的字母
腐烂(凯撒密码)是一种密码术,其中通过将字母中的字母移动到下一个字母来完成编码。
让我们检查如何使用TR进行加密。
在以下示例中,第一组中的每个字符将被第二组中的相应字符替换。
指定的第一个设置为[A-Z],这意味着"ABCDeFghijklmnopqrstuvwxyz""。
第二个是[n-za-m],它变成了"pqrstuvwxyzabcdefghijklmn""。
tr 'a-z' 'p-za-n'
简单指挥以显示上述理论:
$sudo echo 'abg' | tr 'ab' 'ef' Output efg
当我们需要加密电子邮件时非常有用。
检查下面
$sudo echo '[email protected]' | tr 'A-Za-z' 'N-ZA-Mn-za-m'
输出
[email protected]