交换字符串中的字符位置 (bash)

Posted

技术标签:

【中文标题】交换字符串中的字符位置 (bash)【英文标题】:Swapping character locations in a string (bash) 【发布时间】:2015-03-13 15:10:49 【问题描述】:

我遇到了一个问题,我需要在 bash 中更改字符串中字符的顺序,以获取 sim 卡的 ICCID。

我从调制解调器获取的号码看起来像这样; 980136010000006187F5。我需要做的就是将字符串中的字符成对取反背诵。在此示例中,98 将是 89,01 将是 10,依此类推,最后加起来是 8910631000000016785F,这是一个正确的 ICCID 编号。

我认为这可能使用 sed 或某种 for 循环来实现,但我一直不知道如何实现这一点。非常感谢您的帮助!

问候, 卡尔

【问题讨论】:

【参考方案1】:

sed 可以轻松搞定。

sed 's/\(.\)\(.\)/\2\1/g' <<<980136010000006187F5

sed 命令查找与.. 的每个匹配项(即一对字符),独立捕获它们,然后用两个捕获的倒序替换它们。

【讨论】:

以上是关于交换字符串中的字符位置 (bash)的主要内容,如果未能解决你的问题,请参考以下文章

Bash - 如何获取位置参数的最后一个字符?

bash中的字符串处理

linux shell bash 内置变量参考

Bash编程中的字符串处理

Bash:在OS X下查找字符串中字符的位置

从带有位置参数的字符串执行 BASH shell