sed:-e 表达式 #1,字符 56:'s' 的未知选项

sed:-e 表达式 #1,字符 56:'s' 的未知选项

我有几个目录和子目录包含文本文件。我需要为所有目录和子目录更改这些文本文件的特定行。我使用以下 sed 命令执行此任务;

find ./ -type f -exec sed -i -e 's/old_line/new_line/g' {} \;

如果 old_line 和 new_line 中没有空格,则此方法有效。但对于以下示例,此方法无效;

old_line=5704550660          SPP91564_2                              ANT # / TYPE

new_line=5704550660          SPP91564_2      NONE                    ANT # / TYPE

当我在上面的 sed 命令中附加这些行时,我收到;

sed: -e expression #1, char 56: unknown option to `s'

我如何修改上述命令,使上述示例能够正常工作?

答案1

造成问题的不是空格,而是/文本中的。您的命令显示:sed 's/570455066 .../ TYPE/5704550660.../ TYPE/g'- 您看到问题了吗?您需要使用其他字符作为分隔符,该字符不会出现在替换文本中,例如:

sed 's:5704550660          SPP91564_2                              ANT # / TYPE:5704550660          SPP91564_2      NONE                    ANT # / TYPE:g'

您也可以使用/反斜杠在文本中转义:\/

相关内容