gpt4 book ai didi

command-line - 在 Mavericks 上运行 find 和 sed 后 sed 出现 "invalid command code ."错误

转载 作者:行者123 更新时间:2023-12-05 01:47:50 26 4
gpt4 key购买 nike

我运行以下命令来查找旧网址并将其替换为新网址。

find . -type f -print0 | xargs -0 sed -i \
's/http:\/\/www\.oldwebaddress\.com\/techblog/https:\/\/github\.com\/myname/g'

但是我得到以下错误。

sed: 1: "./.DS_Store": invalid command code .

我在阅读了一些 Stack Overflow 帖子后尝试了这个,但也没有用。

find . -type f -print0 | xargs -0 sed -i "" \
's/http:\/\/www\.oldwebaddress\.com\/techblog/https:\/\/github\.com\/myname/g'

sed: RE error: illegal byte sequence

我在这里做错了什么?

最佳答案

Mac OS X 上的 sed 接受 -i 选项,但需要一个参数,即用于备份文件的后缀。它不是可选的,因为它与 GNU sed 一样。因此,sed 脚本尝试使用您的 s/// 命令作为后缀,然后第一个文件名恰好不是有效的 sed 命令。

对于第二次尝试,使用 -i "",不太清楚发生了什么。我假设在 "" 之后有一个反斜杠,或者全部都在一行上,所以它在语法上是正确的。

编辑路径名时,使用/以外的字符作为分隔符更简单。通常,% 有效:

-e 's%http://www\.oldwebaddress\.com/techblog%https://github\.com/myname%g'

但是你可以使用任何字符; Control-AControl-G 也非常有效,甚至比 % 更不可能出现在 URL 中。

不过,我不清楚为什么会收到 RE 错误(无效的字节序列)。从题中复制粘贴没有显示问题,其他question引用建议 LANG=C LC_CTYPE=C 但我没有遇到 LANG=en_US.UTF-8 的问题并且没有为 LC_CTYPE 设置.

关于command-line - 在 Mavericks 上运行 find 和 sed 后 sed 出现 "invalid command code ."错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21470124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com