Linux中的tr命令的详细解释
Linux中的tr命令的详细解释
学习啦在线学习网 Linux下的tr命令是一个专门用来处理字符的命令,下面由学习啦小编为大家整理了linux下的tr命令的详细解释,希望对大家有帮助!
Linux中的tr命令的详细解释
Linux中的tr命令用于转换或删除文件中的字符。
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
语法
学习啦在线学习网 tr [-cdst][--help][--version][第一字符集][第二字符集]
学习啦在线学习网 tr [OPTION]…SET1[SET2]
参数说明:
学习啦在线学习网 -c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
-d, --delete:删除指令字符
-s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
-t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
学习啦在线学习网 --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,代表你可自订的字符)
linux的tr命令的具体例子
1、将文件file中出现的"abc"替换为"xyz"
# cat file | tr "abc" "xyz" > new_file
【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。
学习啦在线学习网 2、使用tr命令“统一”字母大小写
(小写 --> 大写)
# cat file | tr [a-z] [A-Z] > new_file
(大写 --> 小写)
学习啦在线学习网 # cat file | tr [A-Z] [a-z] > new_file
3、把文件中的数字0-9替换为a-j
学习啦在线学习网 # cat file | tr [0-9] [a-j] > new_file
4、删除文件file中出现的"Snail"字符
# cat file | tr -d "Snail" > new_file
【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。
5、删除文件file中出现的换行'\n'、制表'\t'字符
# cat file | tr -d "\n\t" > new_file
不可见字符都得用转义字符来表示的,这个都是统一的。
6、删除“连续着的”重复字母,只保留第一个
学习啦在线学习网 # cat file | tr -s [a-zA-Z] > new_file
7、删除空行
# cat file | tr -s "\n" > new_file
8、删除Windows文件“造成”的'^M'字符
# cat file | tr -d "\r" > new_file
或者
# cat file | tr -s "\r" "\n" > new_file
学习啦在线学习网 【注意】这里-s后面是两个参数"\r"和"\n",用后者替换前者
9、用空格符0替换制表符 class="main">
Linux中的tr命令的详细解释
Linux中的tr命令的详细解释
学习啦在线学习网 10、把路径变量中的冒号":",替换成换行符"\n"
# echo $PATH | tr -s ":" "\n"
补充:linux的tr命令关于表达字符串的特殊序列
表达字符串的特殊序列
学习啦在线学习网 String1 和 String2 变量中所包含的字符串可以使用以下的约定来表示:
C1-C2
学习啦在线学习网 指定了 C1 所指定的字符和 C2 所指定的字符之间(包括 C1 和 C2)进行整理的字符串。C1 所指定的字符必须整理放在由 C2 所指定的字符之前。
注:在使用本方法指定子范围时,当前语言环境对结果有重要影响。如果需要用命令来产生与语言环境无关的一致结果,那么应该避免使用子范围。
学习啦在线学习网 [C*Number]
学习啦在线学习网 Number 是一个整数,它指定了由 C 所指定的字符的重复次数。除非其首位数字是 0,否则 Number 一律视为是十进制整数;如果首位数字是 0,那么视为八进制整数。
[C*]
学习啦在线学习网 用 C 指定的字符填写字符串。该选项只用于包含在 String2 中的字符串末尾,它强制 String2 中的字符串具有与由 String1 变量所指定的字符串一样的字符数。*(星号)后面指定的任何字符都被忽略。
学习啦在线学习网 [ :ClassName: ]
alnum lower
学习啦在线学习网 alpha print
学习啦在线学习网 blank punct
学习啦在线学习网 cntrl space
digit upper
学习啦在线学习网 graph xdigit
除 [:lower:] 和 [:upper:] 转换字符类之外,其他字符类指定的字符都按未指定的顺序放入数组中。由于未定义字符类指定的字符的顺序,仅当目的为将多个字符映射为一个时才使用这些字符。转换字符类除外。
有关字符类的详细情况,请参阅 ctype 子例程。
[ =C= ]
指定所有的字符具有与 C 所指定的字符相同的等价类。
\Octal
指定字符,其编码由 Octal 所指定的八进制值表示。Octal 可以是 1 位、2 位 或 3 位八进制整数。空字符可以用 '
Linux中的tr命令的详细解释
Linux中的tr命令的详细解释
学习啦在线学习网 Linux下的tr命令是一个专门用来处理字符的命令,下面由学习啦小编为大家整理了linux下的tr命令的详细解释,希望对大家有帮助!
Linux中的tr命令的详细解释
Linux中的tr命令用于转换或删除文件中的字符。
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
语法
tr [-cdst][--help][--version][第一字符集][第二字符集]
学习啦在线学习网 tr [OPTION]…SET1[SET2]
参数说明:
-c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
-d, --delete:删除指令字符
-s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
-t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
--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,代表你可自订的字符)
linux的tr命令的具体例子
1、将文件file中出现的"abc"替换为"xyz"
学习啦在线学习网 # cat file | tr "abc" "xyz" > new_file
【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。
学习啦在线学习网 2、使用tr命令“统一”字母大小写
(小写 --> 大写)
# cat file | tr [a-z] [A-Z] > new_file
(大写 --> 小写)
学习啦在线学习网 # cat file | tr [A-Z] [a-z] > new_file
3、把文件中的数字0-9替换为a-j
# cat file | tr [0-9] [a-j] > new_file
4、删除文件file中出现的"Snail"字符
# cat file | tr -d "Snail" > new_file
【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。
学习啦在线学习网 5、删除文件file中出现的换行'\n'、制表'\t'字符
# cat file | tr -d "\n\t" > new_file
学习啦在线学习网 不可见字符都得用转义字符来表示的,这个都是统一的。
6、删除“连续着的”重复字母,只保留第一个
# cat file | tr -s [a-zA-Z] > new_file
7、删除空行
# cat file | tr -s "\n" > new_file
8、删除Windows文件“造成”的'^M'字符
学习啦在线学习网 # cat file | tr -d "\r" > new_file
或者
# cat file | tr -s "\r" "\n" > new_file
学习啦在线学习网 【注意】这里-s后面是两个参数"\r"和"\n",用后者替换前者
9、用空格符0替换制表符 class="main">
学习啦在线学习网' 表示,并可以像任何其他的字符那样进行处理。\ControlCharacter
指定与 ControlCharacter 所指定的值相应的控制字符。可以表示以下值:
\a 警告
\b 退格键
\f 换页
\n 换行
\r 回车
\t 制表键
学习啦在线学习网 \v 垂直制表键
\
学习啦在线学习网 规定 "\"(反斜杠)就是作反斜杠使用,而无作为转义字符的任何特殊意义。
\[
指定“[”(左括号)就作为左括号使用,而无作为特定字符串序列的开始字符的任何特殊意义。
\-
学习啦在线学习网 指定“-”(负号)就作为负号使用,而无作为范围分隔符的任何特殊意义。
学习啦在线学习网 如果某个字符在 String1 中被指定过多次,那么该字符就被转换成 String2 中为与 String1 中最后出现的字符相对应的字符。
学习啦在线学习网 如果由 String1 和 String2 指定的字符串长度不相同,那么 tr 命令就会忽略较长一个字符串中的多余字符。