How to determine which type of backup type do you need
目录:
tr
是Linux和Unix系统中的命令行实用程序,可转换,删除和压缩标准输入中的字符,并将结果写入标准输出中。
tr
命令可以执行诸如删除重复的字符,将大写转换为小写以及替换和删除基本字符的操作。 通常,它通过管道与其他命令结合使用。
在本教程中,我们将通过实际示例和最常见选项的详细说明向您展示如何使用
tr
命令。
如何使用
tr
命令
tr
命令的语法如下:
tr OPTION… SET1
tr
接受通常具有相同长度的两组字符,并用第二组中的相应字符替换第一组中的字符。
SET
基本上是一个字符串,包括特殊的反斜杠转义字符。
在下面的示例中,
tr
通过将第一组字符与第二组字符进行映射,来替换标准输入(linuxize)中的所有字符。
echo 'linuxize' | tr 'lin' 'red'
l
每次出现都用
r
替换,用
e
替换
i
,用
d
替换
n
:
reduxeze
字符集也可以使用字符范围来定义。 例如,代替编写:
echo 'linuxize' | tr 'lmno' 'wxyz'
您可以使用:
echo 'linuxize' | tr 'ln' 'w-z'
使用
-c
(--
--complement
)选项时,
tr
替换SET1中不存在的所有字符。
在下面的示例中,除“ li”以外的所有字符都将替换为第二组中的最后一个字符:
echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy
您可能已经注意到,上面的输出比输入多一个可见的字符。 这是因为
echo
命令会打印不可见的换行符
,该字符也将替换为
y
。 要回显不带换行的字符串,请使用
-n
选项。
-d
(--delete)选项告诉
tr
删除SET1中指定的字符。 在不压缩字符的情况下,仅指定一组字符。
下面的命令将删除
l
,
i
和
z
字符:
echo 'Linuxize' | tr -d 'liz'
L
字符不会被删除,因为输入包含大写的
L
而SET中的
l
字符是小写。
Lnuxe
-s
(--
--squeeze-repeats
)选项用最后一个SET中的字符集替换一系列重复出现的字符。
在以下示例中,
tr
删除重复的空格字符:
echo "GNU \ Linux" | tr -s ' '
GNU \ Linux
使用SET2时,将SET1中指定的字符序列替换为SET2。
echo "GNU \ Linux" | tr -s ' ' '_'
GNU_\_Linux
-t
(--
--truncate-set1
)选项强制
tr
在执行进一步处理之前将SET1截断为SET2的长度。
默认情况下,如果SET1大于SET2,
tr
将重用SET2的最后一个字符。 这是一个例子:
echo 'Linux ize' | tr 'abcde' '12'
输出显示SET1的字符
e
与SET2的最新字符
2
匹配:
Linux iz2
现在,将相同的命令与
-t
选项一起使用:
echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize
您可以看到SET1的最后三个字符被删除。 SET1变为“ ab”,长度与SET2相同,并且不进行替换。
组合选项
tr
命令还允许您组合其选项。 例如,以下命令首先将除
i
以外的所有字符替换为
0
,然后再压缩重复的
0
字符:
echo 'Linux ize' | tr -cs 'i' '0'
Tr命令示例
在本节中,我们将介绍
tr
命令的一些常见用法示例。
将小写转换为大写
将小写转换为大写或反向是
tr
命令的典型用例之一。
匹配所有小写字符,并且
匹配所有大写字符。
echo 'Linuxize' | tr '' ''
LINUXIZE
除了字符类,您还可以使用范围:
echo 'Linuxize' | tr 'az' 'A-Z'
要将大写转换为小写,只需切换位置。
删除所有非数字字符
以下命令删除所有非数字字符:
echo "my phone is 123-456-7890" | tr -cd
代表所有数字字符,通过使用
-c
选项,该命令将删除所有非数字字符。 输出将如下所示:
将每个单词换行
要将每个单词放在新行中,我们需要匹配所有非字母数字字符并将其替换为新行:
echo 'GNU is an operating system' | tr -cs '' '\n'
删除空白行
要删除空白行,只需挤压重复的换行符:
tr -s '\n' < file.txt > new_file.txt
在上面的命令中,我们使用重定向符号
<
来将
file.txt
的内容传递给
tr
命令。 重定向
>
将命令的输出写入
new_file.txt
。
在单独的行上打印
$PATH
目录
$PATH
环境变量是用冒号分隔的目录列表,它告诉Shell键入命令时要搜索可执行文件的目录。
要在单独的行上打印每个目录,我们需要匹配冒号(:)并将其替换为新行:
echo $PATH | tr ':' '\n'
/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin
结论
tr
是用于翻译或删除字符的命令。
尽管非常有用,但是
tr
只能使用单个字符。 对于更复杂的模式匹配和字符串操作,应使用
sed
或
awk
。







