【发布时间】:2019-03-22 04:16:12
【问题描述】:
在我的当前目录(projDir)中,我有大约 41 个文件夹,如下所示:
- ProgOneDir
- ProgTwoDir
- ProgThreeDir
- ...
- ProgFortyOneDir
...等等(我没有想出命名方案,而且我不是系统管理员,所以请不要为他们对我大喊大叫)。
在每个子文件夹中,都有我需要编辑的 README.md 文件。我不想进入每个子文件夹并在那里编辑文件,而是使用 sed 命令来执行此操作。这些文件始终命名为 README.md
我正在运行 CentOS7
我当前的命令是:
find . -name 'README.md' -exec sed -i -e 's/./makeprog $MAKE_FLAGS CFLAGS="-I/usr/local/include/libtool" OFLAGS="-L/usr/local/lib"/./makeprog/g' {} \;
基本上,我需要切换:
./makeprog $MAKE_FLAGS CFLAGS="-I/usr/local/include/libtool" OFLAGS="-L/usr/local/lib
到
./makeprog
有人可以帮忙吗?我得到的错误是:
sed: -e expression #1, char 43: unknown option to `s'
我已经看过了:
我相信我的错误是由 ./command 引起的。我遵循了将所有 / 切换为 + 的建议,但这仍然不起作用,因为我收到以下错误:
sed: -e expression #1, char 110: unterminated `s' command
谢谢。
【问题讨论】:
-
嗨@kvantour,我不这么认为。我看到了,但这不是我关心的明确路径,它正在切换一个包含 ./ 的命令。/我找到了那篇文章并尝试按照将 / 切换为 + 的建议进行操作,但它仍然没有用。跨度>
-
基本上你已经有了正确的命令。唯一的失败:斜杠字符是您的“模式”的一部分,这就是为什么您必须转义它或为 sed 使用另一个“分隔符”,例如 # char:
sed 's#./makeprog $MAKE_FLAGS CFLAGS="-I/usr/local/include/libtool" OFLAGS="-L/usr/local/lib"#./makeprog#g' -
斜杠会给您错误“s 的未知选项”。另一个问题是你的美元符号。你必须逃离他们。
-
@kvantour $ 符号无关紧要,只要使用单引号即可。
-
@kvantour:如果
$位于正则表达式的末尾,那就是真的。否则视为普通字符。