Eet*_*Eet 3 sed awk text-processing
我正在尝试在任意长度的十六进制字符字符串中自动交换字符 1 和 2、3 和 4 等。
例子:
A627E39B
Run Code Online (Sandbox Code Playgroud)
变成:
6A723EB9
Run Code Online (Sandbox Code Playgroud)
使用 sed 或其他 *nix 文本实用程序之一似乎应该可以做到这一点,但到目前为止我还没有找到任何示例。
您可以使用反向引用:
echo A627E39B | sed 's/\(.\)\(.\)/\2\1/g'
Run Code Online (Sandbox Code Playgroud)
这将查找所有出现的两个字符并交换它们。
正如glenn jackman指出的那样,启用扩展的正则表达式(-E带有 GNU、BSD 或toybox seds)可以避免转义括号:
echo A627E39B | sed -E 's/(.)(.)/\2\1/g'
Run Code Online (Sandbox Code Playgroud)