sed用可打印字符替换不可打印的字符

时间:2015-04-07 13:33:33

标签: sed

BASH上运行Windows 7和UNIX实用程序。

拥有一个包含垂直标签的文件。二进制符号为0x0B。八进制符号为013。我需要用空格替换符号。

尝试过此sed方法,但失败了:

sed -e 's/'$(echo "octal-value")'/replace-word/g'

具体做法是:

sed -e 's/'$(echo "\013")'/ /g'

更新

关注this advice我使用GNU sed这种方法:

sed -i 's:\0x0B: :g' file

但是顽固的垂直标签仍在文件中。


用可打印字符替换不可打印字符的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

Sed应识别特殊字符:

sed -e 's/\x0b/ /g'

答案 1 :(得分:0)

回答为什么-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'脚本!)

如果你只有一个脚本',那么-e显然是可选的。