Linux中的TR命令与示例

时间:2020-03-05 15:28:43  来源:igfitidea点击:

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]