我帮助编写一个bash脚本时遇到了问题。我想要改变字符串中两个字符的位置。
我的输入如下:
"aaaaa_eeeee"
期望的输出是:
"eeeee_aaaaa"
我不想翻转字符串或做其他类似的事情,我需要做的是将字符 "a" 替换为 "e" 并将 "e" 替换为 "a"。我尝试过使用
echo "aaaaa_eeeee" | tr "a" "e"
进行首次替换,但第二次替换我不知道该怎么做。tr
提供多个原始字符和替换字符。原始字符串中的每个字符都将被相应的替换字符所替换。echo "aaaaa_eeeee" | tr "ae" "ea"
为了使替换在单个逻辑通行中起作用,您需要将多个字符传递给tr实用程序。BSD版本的tr的man页面描述了如何使用翻译集合:
[T]字符串中的字符被翻译成字符串2中的字符,其中字符串1中的第一个字符被翻译成字符串2中的第一个字符,依此类推。如果字符串1比字符串2长,则在耗尽字符串1之前复制在字符串2中找到的最后一个字符。
例如:
$ tr "ae" "ea" <<< "aaaaa_eeeee"
eeeee_aaaaa
a => e
和e => a
,避免了尝试按顺序映射替换所导致的问题。这是一个逆转的工作:
echo "aaaaa_eeeee"|rev
eeeee_aaaaa