我正在运行一个 shell 命令,它返回由 ASCII 和十六进制字符组合而成的原始字符串。它嵌入的字符是十六进制的空格字符。以下是输出:
KINGSTON\x20SV100S2
ST380011A\x20\x20\x20\x20\x20\x20\x20
Maxtor\x206L300S0\x20\x20
如何将所有 \x20
替换为单个 ASCII 空格字符?
预期输出:
KINGSTON SV100S2
ST380011A
Maxtor 6L300S0
P.S 字符串存储在 bash 变量中,因此我更喜欢不输入文件的解决方案。
最佳答案
要只替换 \x20
而不要使用 sed
:
sed 's/\\x20/ /g' <<< "$output"
或
yourCommand | sed 's/\\x20/ /g'
要替换所有转义序列,请使用 echo -n
(正如 kvantour 已经指出的那样)或者更好的是,更便携的 printf %b
也可以直接分配给变量不使用 $()
:
printf -v output %b "$output"
关于linux - 用 ASCII 空格替换字符串中的 HEX 字符 (\x20),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53783834/