linux中的tr命令---字符的替换与删除

指令名称:

tr(1) - 字符的转换与删除

说明:

这指令是个字符过滤器,数据由标准输入流入,经过指令的指定转换后,再导向标准输出。感觉上很像一个筛子。

基本上,指令一次处理一个字符,所以不具备识别"英文单字"这种特定顺序的字符组合。目前这个指令也不适合处理中文档案。

选项:

-c, --complement

反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换

-d, --delete

删除指令字符

-s, --squeeze-repeats

缩减连续重复的字符成指定的单个字符

-t, --truncate-set1

削减 SET1 指定范围,使之与 SET2 设定长度相等

--help

显示程序用法信息

--version

显示程序本身的版本信息

以下是特定的字符设定(SETs),与他们所代表的意义

/NNN 8进位的 ASCII 码倒斜线(backslash)

/a 警示声 (BEL)

/b 光标倒退一格字符(backspace)

/c 在行尾不加上换行字符(同 -n 选项的作用)

/f 换页(form feed)

/n 换行(new line)

/r 游标回归行首(carriage return)

/t 水平跳格(horizontal tab)

/v 垂直跳格(vertical tab)

//

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,代表你可自订的字符)

实例说明:

以下两种型态是运用 tr 指令常见的模式。

# cat file-A | tr [A-Z] [a-z]

# tr [A-Z] [a-z] < file-A > file-a

基本上 tr 属于搭配型指令,因此数据通常藉由 pipeline(符号"|") 或 input redirection(符号"<")来导入,其指令本身并不支持档案的呼叫。导入的数据经由 tr 过滤转换后会导向标准输出显示在屏幕上。

大小字母的转换

tr 指令非常适合用来做大小写字母的转换。

# tr [:upper:] [:lower:] < file-A > file-a

# tr [:lower:] [:upper:] < file-b> file-B

第一行是将大写字母转成小写字母,第二行则是小写字母转成大写字母。两行使用的语法则是特定的写法,其实也可以改写如下

# tr 'A-Z' 'a-z' < file-A > file-a

# tr 'a-z' 'A-Z' < file-b> file-B

这种写法比较简短,我个人也比较惯用。其实用这种写法有一个好处,当我想将一个文本文件的大小写全部反过来时,这个语法可以做到。来看下面的例子

# cat file-Aa

SEE ALSO

The full documentation for tr is maintained as a Texinfo manual.

If the info and tr programs are properly installed at your site,

the command

info tr

should give you access to the complete manual.

#

这是一个普通的文本文件,使用 tr 可以容易地将整个档案的大小写字母反过来,如下

# tr 'a-zA-Z' 'A-Za-z' < file-Aa | tee file-aA

see also

tHE FULL DOCUMENTATION FOR TR IS MAINTAINED AS A tEXINFO MANUAL.

iF THE INFO AND TR PROGRAMS ARE PROPERLY INSTALLED AT YOUR SITE,

THE COMMAND

INFO TR

SHOULD GIVE YOU ACCESS TO THE COMPLETE MANUAL.

#

呀喝!猪羊变色。新档案 file-aA 的大写的字母转成小写字母。

简单的字母代替文字加密

在多人多任务的 UNIX 或 Linux OS 中,一般使用者其实很难保有隐私,因为永远还有一个人可以查看管理你的私人档案,那就是你的系统管理者。所以当你需要在这样一个公共空间里,保有一点基本的自我隐私时,文件最好为它加密。

tr 可以产生趣味大于实质用途的加密,方法简单如下

# tr 'a-z ' 'qazwsxedcrfvtgbyhnujmikolp' < file-Aa | tee file-SAa

SEEpALSO

TdspxjffpwgzjvstuqucgtpxghpuhpcnpvqctuqctswpqnpqpTskctxgpvqtjqf.p

Ixpudspctxgpqtwpuhpbhgehqvnpqhspbhgbshfopctnuqffswpqupogjhpncus,p

udspzgvvqtw

pctxgpuh

ndgjfwpecmspogjpqzzsnnpugpudspzgvbfsuspvqtjqf.p

#

为了举例方便,密码字母集我只设定小写字母。如果 真想用的话,最好将整个 ASCII 全部代替会比较理想。同时为了安全起见,指令不可在交谈模式下使用,因为程序有可能正被观察中,同时也必须注意history功能是否储存的密码字母集。 最好的方式是将程序写成 script 来执行,当然密码字母集不可包含在其中。

解密的过程只需将正确的密码字母集放到 SET1 将替换的程序反过来即可...

# tr 'qazwsxedc rfvtgbyhnujmikolp' 'a-z ' < file-SAa

SEE ALSO

The full documentation for tr is maintained as a Texinfo manual.

If the info and tr programs are properly installed at your site,

the command

info tr

should give you access to the complete manual.

#

这种加密法适合 100 个字母以内的简短讯息使用,绝对可以蒙过一些小Q蛋,只是碰上频率分析法专家会被笑而已。

压缩过多的连续空白或空行

# tr -s ' ' ' ' < file

对空白过多的文本文件,这个做法可以简单迅速地解决。如果对象是空行,也可以使用

# tr -s '/n' '/n' < file

所以相似的问题,都可藉由 -s 选项做有效的缩减。

让转换参数做1对1的有效对应

有时一不小心 SET1 的范围指定多过对应到 SET2 的指定时,执行结果会有小问题,来看下例

# cat file-a

a

ab

abc

abcd efgh ijkl

# tr 'a-z' '012' < file-a

0

01

012

0122 2222 2222

也就是说,SET1 对应到 SET2 的关系变成 a 转换成 0, b 转换成 1, c-z 转换成 2。通常,最后的 c-z 对应多半是设定时没有预料到的对应关系。

要避免或限制这种效应,可以加上 -t 选项

# tr -t 'a-z' '012' < file-a

0

01

012

012d efgh ijkl

因 -t 选项,使对应关系改变成 a 转换成 0, b 转换成 1, c 转换成 2, d-z 因 SET2 没有设定而不做任何转换对应。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: tr命令Linux的一个文本处理工具,用于对文本进行字符转换和替换操作。它可以将一个字符字符替换为另一个字符字符,也可以删除指定字符字符tr命令的基本语法为: tr [OPTION] SET1 [SET2] 其,OPTION为可选参数,SET1为需要替换删除字符集,SET2为替换后的字符集。如果只指定SET1,则表示删除SET1字符。常用的选项包括: -c:取反,即替换SET1没有出现的字符; -d:删除SET1字符; -s:压缩,即将SET1连续出现的重复字符压缩为一个字符。 例如,将文件的所有小写字母转换为大写字母: tr 'a-z' 'A-Z' < file.txt 将文件的所有空格替换为下划线: tr ' ' '_' < file.txt 删除文件的所有数字: tr -d '-9' < file.txt 压缩文件的重复字符tr -s 'a-z' < file.txt ### 回答2: Linuxtr命令是一个十分强大且重要的命令,它主要用于对文本进行字符替换删除或转换等操作。在Linux系统tr命令的用法和参数非常丰富,下面我们将详细介绍其常用的用法。 1.tr命令的基本语法 tr [option] set1 set2 其,option为可选参数,set1和set2分别表示字符集1和字符集2。 2.tr命令的功能 tr命令的主要功能是对输入的字符集进行转换、删除替换等操作。 3.tr命令的常用参数 (1)-d,表示删除字符 例如以下命令将从文本文件删除所有的数字: $ cat file.txt | tr -d ‘0-9’ > newfile.txt (2)-s,表示压缩字符 例如以下命令将重复的字符压缩成一个字符: $ cat file.txt | tr -s ‘a’ ‘b’ > newfile.txt (3)-c,表示补全字符 例如以下命令将把除了a、b以外的其他字符替换为’-‘: $ cat file.txt | tr -c ‘ab’ ‘-’ > newfile.txt (4)-t,表示删除字符 例如以下命令将把文本文件的大写字母转换为小写字母: $ cat file.txt | tr -t ‘[:upper:]’ ‘[:lower:]’ > newfile.txt (5)-r,表示替换字符 例如以下命令将把文本文件的a替换为b: $ cat file.txt | tr ‘a’ ‘b’ > newfile.txt 4.总结 以上便是Linuxtr命令的常用用法和参数。其tr命令十分有用,主要用于字符集的转换、删除替换等操作,熟练掌握它的各种用法和参数,能够在Linux系统快速、高效地完成各种文本处理任务。希望对大家有所帮助。 ### 回答3: tr命令是一个常见的Linux命令,可以用于转换或删除字符tr命令的基本语法为:tr [OPTION]... SET1 [SET2]。其,OPTION是可选的命令选项,SET1是要转换或删除字符集合,SET2是用于替换字符集SET1的字符集合。 tr命令的一些常见选项和用法如下: 1. -d选项:删除指定字符,例如:tr -d 'aeiou'将删除输入文本的所有元音字母。 2. -s选项:压缩字符集,例如:tr -s ' '将多余的空格压缩成一个空格。 3. -c选项:取反字符集,例如:tr -c 'a-z' '0-9'将所有非小写字母替换为数字。 4. SET选项:SET可以是字符范围或字符列表,例如:tr 'a-z' 'A-Z'将小写字母转换为大写字母。 5. SET1和SET2的长度不相等:如果SET1和SET2的长度不相等,tr命令会将SET1字符用SET2的最后一个字符进行替换。例如:tr 'abc' '12'将'a'转换为'1','b'转换为'2','c'转换为'2'。 6. 文件重定向:tr命令还可以使用文件重定向,例如:tr 'a-z' 'A-Z' < input.txt > output.txt将input.txt的小写字母转换为大写字母,并将结果输出到output.txt。 总之,tr命令是一个非常有用的转换和删除字符的工具,可以轻松地完成一些文本处理任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值