【发布时间】:2017-01-15 14:45:46
【问题描述】:
当我使用 sed 将所有空格替换为 X 时,该命令有效,该命令为:
sed 's/ /X/g' filelist.tmp
但是,当我尝试用 \space 替换所有出现的空格时,代码是:
sed 's/ /\ /g' filelist.tmp
它不起作用。我究竟做错了什么?请注意,我是 shell 脚本新手。
【问题讨论】:
当我使用 sed 将所有空格替换为 X 时,该命令有效,该命令为:
sed 's/ /X/g' filelist.tmp
但是,当我尝试用 \space 替换所有出现的空格时,代码是:
sed 's/ /\ /g' filelist.tmp
它不起作用。我究竟做错了什么?请注意,我是 shell 脚本新手。
【问题讨论】:
添加另一个 \ 即你需要使 \ 文字:
sed 's/ /\\ /g'
在空格前只有一个\,\ 正在转义后面的空格;由于空格不是需要转义的替换特殊字符,因此按原样处理。
示例:
% sed 's/ /\\ /g' <<<'foo bar spam'
foo\ \ bar\ \ spam
【讨论】:
sed "s/ /\\ /g" filelist.tmp。没用!
sed 's/ /\\ /g'
\`s and will leave a single ` 解释为sed,因此sed 将具有s/ /\ /g,如您现在所见,这将不起作用.
你应该使用 -r 参数并且应该修复语法
sed -r "s/\s/\\\s/g" filelist.tmp
转义“\”的顺序也有错误。
【讨论】: