了解Linux/UNIX tr命令
时间:2020-01-09 10:39:52 来源:igfitidea点击:
问题描述:能否解释tr命令以及如何在Linux/UNIX上像oses一样使用它?
解决方法: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:补充string1中的字符集
- -s:用一次出现的字符替换SET1中列出的重复字符的每个输入序列
Shell脚本示例
在以下示例中,您将在删除文件之前得到确认。
如果用户使用小写字母响应,tr命令将不执行任何操作,但是如果用户使用大写字母响应,则字符将更改为小写字母。
这将确保即使用户回答"是","是","是"等;脚本应删除文件:
#!/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的文本副本中删除名称服务器一词的每个实例,并将输出写入名为ns.ipaddress.txt的文件中:
tr -d 'nameserver' < /etc/resolv.conf > ns.ipaddress.txt