了解 Linux / UNIX tr 命令
问:您能解释一下 tr 命令以及如何在 Linux / UNIX 等 oses 下使用它吗?
A. tr 实用程序复制给定的输入以生成输出,并替换或删除选定的字符。tr 缩写为翻译或音译。它以两组字符作为参数,并用另一组中的相应元素替换第一组中出现的字符,即它用于翻译字符。
它通常用于 shell 脚本和其他应用程序中。
tr 命令语法
tr [options] "set1" "set2"
echo something | tr "set1" "set2"
tr "set1" "set2" < input.txt
tr "set1" "set2" < input.txt > output.txt
如何在 Linux/UNIX 下使用 tr 命令?
将单词‘linux’翻译为大写:
输出:
$ echo 'linux' | tr "[:lower:]" "[:upper:]"
$ echo 'linux' | tr "a-z" "A-Z"
$ echo 'I LovE linuX. one is better Than 2' | tr "a-z" "A-Z"
LINUX I LOVE LINUX. ONE IS BETTER THAN 2
创建 /path/to/file 中的单词列表,每行一个,输入:
$ tr -cs "[:alpha:]" "\n" < /path/to/file
其中,
- -c :补充字符串1中的字符集
- -s :将 SET1 中列出的重复字符的每个输入序列替换为该字符的单个出现
Shell 脚本示例
在以下示例中,您将在删除文件之前获得确认。如果用户以小写字母响应,tr 命令将不执行任何操作,但如果用户以大写字母响应,则字符将更改为小写字母。这将确保即使用户以 YES、YeS、YEs 等响应;脚本也应该删除文件:
#!/bin/bash echo -n "Enter file name : " read myfile echo -n "Are you sure ( yes or no ) ? " read confirmation confirmation="$(echo ${confirmation} | tr 'A-Z' 'a-z')" if [ "$confirmation" == "yes" ]; then [ -f $myfile ] && /bin/rm $myfile || echo "Error - file $myfile not found" else : # do nothing fi
从 myfile.txt 中删除所有不可打印的字符
$ tr -cd "[:print:]" < myfile.txt
从名为 input.txt 的文件中的文本副本中删除所有两个连续的空格,并将输出保存到名为 output.txt 的新文件中
tr -s ' ' ' ' < input.txt > output.txt
-d 选项用于删除 set1 中指定的字符串(即字符序列)的每个实例。例如,以下命令将从名为 /etc/resolv.conf 的文件的文本副本中删除单词 nameserver 的每个实例,并将输出写入名为 ns.ipaddress.txt 的文件:
tr -d 'nameserver' < /etc/resolv.conf > ns.ipaddress.txt
推荐阅读:
要检查 tr 命令中可以使用的其他选项,请参见 tr 命令手册页,输入:
$ man tr