【发布时间】:2011-12-20 02:09:40
【问题描述】:
我想将文档中的所有 \r\n 替换为 ,我正在尝试这个,请参阅下面的脚本
# sed -i 's/\r\n/<br/>' ~/xxd/*
但是我得到了这个错误
sed: -e expression #1, char 12: `s' 的未知选项
我该如何解决这个问题?
谢谢!
【问题讨论】:
标签: sed
我想将文档中的所有 \r\n 替换为 ,我正在尝试这个,请参阅下面的脚本
# sed -i 's/\r\n/<br/>' ~/xxd/*
但是我得到了这个错误
sed: -e expression #1, char 12: `s' 的未知选项
我该如何解决这个问题?
谢谢!
【问题讨论】:
标签: sed
您的问题是您的替换字符串中有/ 分隔符,因此sed 假设这是您的替换结束,并且它后面的> 是一个标志。
如果您的 sed 足够现代,只需使用不同的分隔符,即替换字符串中的 not:
pax$ echo hello | sed -e 's/e/<br />/'
sed: -e expression #1, char 9: unknown option to `s'
pax$ echo hello | sed -e 's?e?<br />?'
h<br />llo
或者,您可以转义有问题的字符,但我尽量避免这种情况,因为它往往会导致过度锯齿 sed 命令,如 /\/\/\/\/\/\。
您可能需要注意的另一件事是尝试在您的正则表达式中使用\n,因为sed 无论如何都是在线操作的。如果您的意图只是去除回车并插入 HTML 换行符,那么下面的 sed 命令可能会更好:
s?\r$?<br />?
【讨论】:
echo test\r\ntest 就可以看出这一点。如果您不希望 shell 修改它们,则需要单引号引用该参数。您可能还需要echo -e 来解释转义而不是将它们作为字符backslash、r、backslash、n 传递。
sed 's|$|<br />|g' file.html。我想我会用<br /> 替换结束字符,确实有效!