我有几个目录和子目录包括文本文件。我需要为所有目录和子目录更改这些文本文件的特定行。我使用下面的 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'
对于上面的例子,我如何修改上面的命令才能正常工作?
导致问题的不是空格,而是
/
文本中的空格。你的命令是:sed 's/570455066 .../ TYPE/5704550660.../ TYPE/g'
- 你看到问题了吗?您需要使用不同的字符作为不出现在替换文本中的分隔符,比如:
您也可以
/
使用反斜杠转义文本中的:\/
。