sed 用可打印字符替换不可打印字符
sed to replace non-printable character with printable character
Am 运行 BASH
和 Windows 7
上的 UNIX 实用程序。
有一个包含垂直制表符的文件。二进制符号为0x0B
。八进制符号为013
。我需要用空白 space.
替换符号
尝试过这种sed
方法但失败了:
sed -e 's/'$(echo "octal-value")'/replace-word/g'
具体来说:
sed -e 's/'$(echo "3")'/ /g'
更新:
按照 this advice 我使用 GNU sed
和这种方法:
sed -i 's:[=12=]x0B: :g' file
但顽固的垂直制表符仍在文件中。
用可打印字符替换不可打印字符的正确方法是什么?
Sed 应该识别特殊字符:
sed -e 's/\x0b/ /g'
为什么要回答-e?如果您使用多个 sed 表达式,那么每个表达式都必须以 -e 开头。所以,例如:
echo foo bar bas zer | sed -e 's/zer/oh my/g' -e 's/bas/baz/'
会导致:
foo bar baz oh my
因此只需一次调用即可执行 2 种不同的 sed 更改(“脚本”)。有关详细信息,请参阅 sed 手册页。
(上面的例子显然是人为的。然而,我在一个脚本中看到了一个 sed 命令,其中有 78 个 -e 'scripts'!)
如果你只有一个 'script',那么 -e 显然是可选的。
Am 运行 BASH
和 Windows 7
上的 UNIX 实用程序。
有一个包含垂直制表符的文件。二进制符号为0x0B
。八进制符号为013
。我需要用空白 space.
尝试过这种sed
方法但失败了:
sed -e 's/'$(echo "octal-value")'/replace-word/g'
具体来说:
sed -e 's/'$(echo "3")'/ /g'
更新:
按照 this advice 我使用 GNU sed
和这种方法:
sed -i 's:[=12=]x0B: :g' file
但顽固的垂直制表符仍在文件中。
用可打印字符替换不可打印字符的正确方法是什么?
Sed 应该识别特殊字符:
sed -e 's/\x0b/ /g'
为什么要回答-e?如果您使用多个 sed 表达式,那么每个表达式都必须以 -e 开头。所以,例如:
echo foo bar bas zer | sed -e 's/zer/oh my/g' -e 's/bas/baz/'
会导致:
foo bar baz oh my
因此只需一次调用即可执行 2 种不同的 sed 更改(“脚本”)。有关详细信息,请参阅 sed 手册页。
(上面的例子显然是人为的。然而,我在一个脚本中看到了一个 sed 命令,其中有 78 个 -e 'scripts'!)
如果你只有一个 'script',那么 -e 显然是可选的。