在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
但是顽固的垂直标签仍在文件中。
用可打印字符替换不可打印字符的正确方法是什么?
答案 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显然是可选的。