linux - 用 ASCII 空格替换字符串中的 HEX 字符 (\x20)

标签 linux bash replace hex ascii

我正在运行一个 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/

相关文章:

java - 不区分大小写的搜索和替换

php - “rpath”在某些 Linux 系统中不起作用。

c - 为什么我们要在 wait 之后检查 WIFEXITED 以便在 Linux 系统调用中杀死子进程?

C++ 编译错误消息未在 PuTTY 中正确显示

xml - 如何使用 xmlstarlet 编辑具有相似结构元素的 xml 文件?

bash - 带有其他输出的命令行进度条

regex - 如何从 Perl 字符串中删除特定字符?

c - 无法使用 tcpdump 捕获 IP 广播数据包

bash 脚本并行 ssh 远程命令

php - 使用一个过滤器清理 [code] 标签外部的内容,并使用另一个过滤器清理 [code] 标签内部的内容