最近在 macOS Mojave(10.14.2) 使用" sed -i "命令时报错,类似如下:

$ sed -i "s/^[ \t]*~AttributeList()[ \t]*LLVM_DELETED_FUNCTION;/~AttributeList() ;/g" llvm/tools/clang/include/clang/Sema/AttributeList.h sed: 1: "llvm/tools/clang/includ ...": extra characters at the end of l command

刚刚遇到这个问题,百思不得其解。后来搜索了一下,才找到解释。

如下:

$ man sed .................................................. -i extension Edit files in-place, saving backups with the specified extension.If a zero-length extension is given, no backup will be saved.It is not recommended to give a zero-length extension when in-place editing files, as you risk corruption or partial content in situations where disk space is exhausted, etc. ...................................................

sed -i 需要带一个字符串,用来备份源文件,这个字符串会加在源文件名后面组成备份的文件名。

如果这个字符串长度为 0 ,就是说是个空串,那么不备份。

$ sed -i "_nima" 's/xx/python/g' example.txt

这样 sed 不仅会修改文件,并且会生成一个 example.txt_nima 的备份文件。

如果不想备份修改前的内容,可以直接给个空参数,如下:

$ sed -i "" 's/xx/python/g' example.txt

所以,上面的命令,我们需要修改成如下方式:

$ sed -i "" "s/^[ \t]*~AttributeList()[ \t]*LLVM_DELETED_FUNCTION;/~AttributeList() ;/g" llvm/tools/clang/include/clang/Sema/AttributeList.h

蛮扯淡的。

参考链接

论mac使用sed修改文件的正确姿势 OS X + Sed: “extra characters at the end of l command”Error sed extra characters at end of l command

本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统

分页:12
转载请注明
本文标题:macOS Mojave(10.14.2)使用"sed -i"命令时报错'sed: 1: "xxx": extra charact ...
本站链接:https://www.codesec.net/view/627955.html


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(linux) | 评论(0) | 阅读(43)