ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

shell | tr命令

2022-03-07 03:01:04  阅读:232  来源: 互联网

标签:字符 shell -- tr FileName 命令 SET1 SET2


shell | tr命令

声明:该随笔摘抄于菜鸟教程51脚本之家

用途

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有