Bash:我想计算字母并替换文本

Bash:我想计算字母并替换文本

好吧,我对 Bash Shell 脚本非常陌生,到目前为止,我已经相当成功了。我正在使用 BASH 来解决问题...

我想将基本域名:Buddies.forlife.com 转换为 |07|Buddies|07|forlife|03|com

基本上,我需要它来计算字母并将其转换为十六进制。要清楚,不是将域名转换为十六进制,而是将字母数转换为十六进制。我很难替换句点“。”

我希望你能理解我想要达到的目标……

我在这里先向您的帮助表示感谢!

答案1

这是一个使用 awk 的简单方法

echo "Buddies.forlife.com" | awk -F '.' '{ printf( "|0x%x|%s|0x%x|%s|0x%x|%s\n", length($1),$1, length($2),$2, length ($3), $3 )}'
|0x7|Buddies|0x7|forlife|0x3|com

awk 命令将字段分隔符设置-F '.'为句点,因此每个段都被视为其自己的字段。

然后我们可以通过引用这些字段$1, $2 and $3,使用内置函数length获取每个字段的字符数,并使用 printf 打印出结果(%x对于十六进制数,%s对于原始字符串,以及使用'|'符号输出字段分隔符,按照您指定的格式。

前缀0x通常用于表示十六进制数,但可以根据需要更改为其他内容(或不更改为任何内容)。

相关内容