Bash Shell字符转换

Bash Shell字符转换,你需要将文本中出现的某个字符全部转换成另一个字符。

解决方案

可以使用 tr 命令。例如:

tr ';' ',' <be.fore >af.ter

讨论

就其最简单的形式而言,tr 命令用第二个参数的第 1 个(仅此)字符替换第一个参数的第 1 个(仅此)字符。

在上述示例中,我们将输入重定向为文件 be.fore,将输出重定向至文件 af.ter,将输入文件中所有的分号替换成了逗号。

为什么要在分号和逗号两边使用单引号呢?这是因为分号在 bash 中有特殊含义,如果不用引号,那么 bash 会将命令拆成两个,这肯定要出错。逗号倒是没有特殊含义,将它放入引号纯粹出于习惯,免得万一忘记什么。坚持使用引号会更安全,这样就永远不会漏写了。

如果使用多个待转换的字符作为第一个参数,要转换成的字符作为第二个参数,那么 tr 命令就会一次性执行多个字符转换。记住,这种转换是一对一进行的。例如:

tr ';:.!?' ',' <other.punct >commas.all

该命令会将分号、冒号、句号、惊叹号、问号全部转换成逗号。因为第二个参数比第一个参数短,所以不断重复第二个参数的最后一个字符(这个例子中就只有一个)来匹配第一个参数的长度,这样一来,字符就能在转换时一一对应了。

sed 命令也能完成这种转换,只不过语法有点麻烦。tr 命令没有那么厉害,因为它无法使用正则表达式,但 tr 有一些特别的字符区间语法,非常有用。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!