shi*_*hin 3 command-line sed find osx-mavericks
我运行以下命令来查找旧网址并将其替换为新网址。
find . -type f -print0 | xargs -0 sed -i \
's/http:\/\/www\.oldwebaddress\.com\/techblog/https:\/\/github\.com\/myname/g'
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误。
sed: 1: "./.DS_Store": invalid command code .
Run Code Online (Sandbox Code Playgroud)
我在阅读了一些 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
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
Mac sedOS X 上的 接受该-i选项,但需要一个参数,即用于备份文件的后缀。它不像 GNU 那样是可选的sed。因此,sed脚本尝试使用您的s///命令作为后缀,然后第一个文件名恰好不是有效的sed命令。
对于第二次尝试,对于-i "",目前还不太清楚发生了什么。我认为要么后面有一个反斜杠,""要么整个内容实际上在一行上,因此它在语法上是正确的。
/编辑路径名时,使用除分隔符之外的其他字符会更简单。通常,%有效:
-e 's%http://www\.oldwebaddress\.com/techblog%https://github\.com/myname%g'
Run Code Online (Sandbox Code Playgroud)
但你可以使用任何字符;Control-A或Control-G也非常有效,甚至比 更不可能出现在 URL 中%。
不过,我不清楚为什么会收到 RE 错误(无效的字节序列)。从问题复制和粘贴没有显示问题,引用的另一个问题表明LANG=C LC_CTYPE=C但我没有遇到问题,LANG=en_US.UTF-8并且没有为LC_CTYPE.
| 归档时间: |
|
| 查看次数: |
3988 次 |
| 最近记录: |