用于替换某些字符的unix实用程序[重复]

Posted

技术标签:

【中文标题】用于替换某些字符的unix实用程序[重复]【英文标题】:unix utilities to replace certain characters [duplicate] 【发布时间】:2014-06-07 19:23:17 【问题描述】:

我正在尝试进入 UNIX。我想替换和-?:/&变成%5f%3f%3a%2f%26these(@87654332@these是ASCII码对应的十六进制数字)。

我也试图让任何小写字符变为大写,反之亦然,例如the rock 变成 THE ROCKTHE ROCK 变成 the rock

我正在尝试使用标准的 UNIX 实用程序命令和脚本来完成这一切,最好是一行。

到现在为止

tr A-Z a-z

但不确定如何使? 和其他的吐出相应的十六进制#s。

【问题讨论】:

您所说的十六进制转换是url encoding,为此您应该检查urlencode-from-a-bash-script 以获得一些想法。 【参考方案1】:

我想将大写变为小写,反之亦然。就像嘿那里 变成了嘿嘿。

tr 可以做到:

$ echo Hey TherE | tr '[a-zA-Z]' '[A-Za-z]'
hEY tHERe

tr 进行翻译,并且在上面将小写转换为大写,反之亦然。

至于用十六进制值替换某些字符,这里是使用sed的蛮力方法:

$ echo "and-or?" | sed 's/-/%2d/g; s/?/%3f/g; s/:/%3a/g; s|/|%2f|g; s/&/%26/g; s/ /%20/g'
and%2dor%3f

【讨论】:

哇!!! and or 有什么作用? 'and5' 和 'for' 之间不应该有空格吗? @user3563184 字符串and-or? 只是一个包含两个特殊字符的输入示例:-?。如果您希望将 and-or? 转换为其他内容,请告诉我。 我想我对正在发生的事情感到困惑。如果我真的运行它会发生什么?我得到一个不匹配的错误。我想我不确定 and-or 实际上是什么 @user3563184 $ 是命令提示符。您的提示可能会更长,但它们通常以 $ 结尾。 echo "and-or?" 创建样本输入。用您想要的任何内容替换引号中的字符串。 sed... 部分进行转换。在第一行运行命令后,第二行应该作为输出出现。 (如果我错过了你的问题,请告诉我。) 哦对不起你的权利非常感谢你。你太棒了,我刚读了 100 遍就明白了,哈哈

以上是关于用于替换某些字符的unix实用程序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 unix 实用程序 (sed/tr/awk) 用非转义等效项替换所有转义序列

用于检查匿名类型的JSON字符串的C#泛型实用程序

unix 文件实用程序:魔术语法

一些实用但不为人知的Unix命令

如何使用某些控制台实用程序将目录中的 .ogg 文件转换为 .wav 文件 [重复]

thymeleaf 中 String 对象的 #strings.replace() 实用程序方法是不是替换了提供的字符串中的所有匹配项?