Bash 从MAC OS中的命令行写入文件中的特定行
我已经搜索了一点,我在这里找到了答案 但当我尝试执行此命令sed-I'5ianything'file1.txt时,它将不起作用,并显示一条错误消息:Bash 从MAC OS中的命令行写入文件中的特定行,bash,macos,shell,sed,command-line,Bash,Macos,Shell,Sed,Command Line,我已经搜索了一点,我在这里找到了答案 但当我尝试执行此命令sed-I'5ianything'file1.txt时,它将不起作用,并显示一条错误消息: sed: 1: "file1.txt": invalid command code f 当我使用另一个命令sed-I'5i\anywhere'file1.txt时,也会出现相同的错误消息 我不知道为什么它对我不起作用我错过了什么吗? 还有别的办法吗 编辑 我尝试了注释中提供的解决方案,并运行了此命令,但不幸的是,即使这样也无法
sed: 1: "file1.txt": invalid command code f
当我使用另一个命令sed-I'5i\anywhere'file1.txt时,也会出现相同的错误消息
我不知道为什么它对我不起作用我错过了什么吗?
还有别的办法吗
编辑
我尝试了注释中提供的解决方案,并运行了此命令,但不幸的是,即使这样也无法工作
sed -i.bu '5i\anything' file1.txt
sed: 1: "5i\anything": extra characters after \ at the end of i command
这是我的file1.txt:
1. alloha I want some cheese
2.
3. this is just a test and you know it
4.
5. this line will change sooooo sooooooon
6.
7. daaaamn, it changed I mean that line above me daaaaamn
编辑
我在sed的OSX手册页中搜索了一下后,发现:
-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.
对于BSD/Mac sed,提供就地更换的参数-i选项: 或者,若要在不创建备份的情况下替换原始文件,请将空字符串传递给-i,您应首先在不使用-i的情况下测试此文件,并验证其是否按预期工作:
sed -i '' '5i\
anything' file1.txt
您使用的是gnu sed的最新版本吗?sed-V怎么说?@match实际上甚至sed-V在我的终端上都不工作,我收到了错误消息sed:非法选项-V我在mac上工作是你要找的吗?@Chipster不,即使那对我也不起作用你需要一条新的线路,在那之后\不幸的是,我什么都不起作用,我尝试了这两种方法,但都出现了相同的错误:sed:1:5i任何东西:command I expected\follower textYeah现在在您添加了一行新行之后,它工作得非常好,您能为我推荐一个文档,解释为什么在mac.GNU中会发生这种情况。sed在中有文档记录。BSD sed的手册页面比GNUs文档更不全面
sed -i '' '5i\
anything' file1.txt