shell | tr命令
作者:互联网
shell | tr命令
用途
tr,translate的简写,用于字符转换、压缩重复字符或删除文件中的控制字符。
tr指令从标准输入设备读取数据,经过字符串转译后,将结果输出标准输出设备(只接受标准输入,不接受文件参数)。
语法
tr [- cdst ][-- help ][-- version ][第一字符集][第二字符集]
tr [ OPTION ]… SET1 [ SET2 ]
参数说明
- -c, --complement:反选设定字符。用于字符补集替换,用SET2替换SET1中不包含的字符
- -d, --delete:删除指令字符,删除SET1指定的所有字符
- -s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符,用SET1指定的字符来替换对应的重复字符
- -t, --truncate-set1:将SET1中字符用SET2对应位置的字符进行替换,一般缺省为-t
- --help:显示程序用法信息
- --version:显示程序本身的版本信息
字符集合的范围
- \NNN 八进制值的字符 NNN (1 to 3 为八进制值的字符)
- \ 反斜杠
- \a Ctrl-G 铃声
- \b Ctrl-H 退格符
- \f Ctrl-L 走行换页
- \n Ctrl-J 新行
- \r Ctrl-M 回车
- \t Ctrl-I tab键
- \v Ctrl-X 水平制表符
- CHAR1-CHAR2 :字符范围从 CHAR1 到 CHAR2 的指定,范围的指定以 ASCII 码的次序为基础,只能由小到大,不能由大到小。
- [CHAR*] :这是 SET2 专用的设定,功能是重复指定的字符到与 SET1 相同长度为止
- [CHAR*REPEAT] :这也是 SET2 专用的设定,功能是重复指定的字符到设定的 REPEAT 次数为止(REPEAT 的数字采 8 进位制计算,以 0 为开始)
- [:alnum:] :所有字母字符与数字
- [:alpha:] :所有字母字符
- [:blank:] :所有水平空格
- [:cntrl:] :所有控制字符
- [:digit:] :所有数字
- [:graph:] :所有可打印的字符(不包含空格符)
- [:lower:] :所有小写字母
- [:print:] :所有可打印的字符(包含空格符)
- [:punct:] :所有标点字符
- [:space:] :所有水平与垂直空格符
- [:upper:] :所有大写字母
- [:xdigit:] :所有 16 进位制的数字
- [=CHAR=] :所有符合指定的字符(等号里的 CHAR,代表你可自订的字符)
实例
-
-s 替换重复的字符
# 将连续重复的多个字符替换为单个字符,SET1指定了字符串要被操作的字符
echo "aaabbbaacccfddd" | tr -s [abcdf] // 输出 abacfd
# 删除空白行
tr -s ["\n"]
-
-d 删除字符
# 删除字符串中所有字母
echo "a12HJ13fdaADff" | tr -d "[a-z][A-Z]" //输出 1213
# 删除字符串中所有匹配SET1集合中的字符
echo "a1213fdasf" | tr -d [adfs] // 输出 1213
# 删除文件FileName中的数字、点、空格、横杠
cat FileName | tr -d "[0-9][.][\-][ ]"
-
-t 字符替换,一般缺省为-t,SET1和SET2中字符一一对应
# 将文件FileName中的小写字母全部转换成大写字母:
cat FileName |tr a-z A-Z
cat FileName |tr -t a-z A-Z
cat FileName |tr [:lower:] [:upper:]
# 将字符串中的SET1字符用SET2中字符替换
echo "a1213fdasf" | tr -t [afd] [AFO] // 输出 A1213FOAsF
-
-c 字符补集替换
# 文件FileName
Python 2015.9 - 2018.11
Linux 2016.4 - 2018.11
C 2013.9 - 2014.9
Golang 2018.11 -
# 删除文件FileName中的除字母以外的字符
cat FileName | tr -cs "[a-z][A-Z]" "\n"
cat FileName | tr -c "[a-z][A-Z]" "#" | tr -s "#" | tr -t "#" "\n"
// 输出
Python
Linux
C
Golang
标签:字符,shell,--,tr,FileName,命令,SET1,SET2 来源: https://www.cnblogs.com/jinsheng-79/p/15974347.html