当前位置: 首页 > 知识库问答 >
问题:

sed就地编辑文件

楚钊
2023-03-14

我试图找出是否可以在单个sed命令中编辑文件,而不需要手动将编辑的内容流式传输到新文件中,然后将新文件重命名为原始文件名。我尝试了-I选项,但我的Solaris系统说-I是非法选项。有别的方法吗?

共有3个答案

奚飞星
2023-03-14

请注意,在OS X上,运行此命令时可能会出现奇怪的错误,如“无效命令代码”或其他奇怪的错误。要解决此问题,请尝试

sed -i '' -e "s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g" <file>

这是因为在OSX版本的sed上,i选项需要一个扩展名参数,因此您的命令实际上被解析为扩展名参数,文件路径被解释为命令代码。资料来源:https://stackoverflow.com/a/19457213

拓拔霄
2023-03-14

在sed不能就地编辑文件的系统上,我认为更好的解决方案是使用perl:

perl -pi -e 's/foo/bar/g' file.txt

虽然这确实会创建一个临时文件,但它会替换原始文件,因为提供了一个空的就地后缀/扩展名。

林鹏鹍
2023-03-14

i选项将编辑的内容流到一个新文件中,然后在后台重命名。

例子:

sed -i 's/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g' filename

在macOS上您需要:

sed -i '' 's/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g' filename
 类似资料:
  • 问题内容: 使用什么是能够编辑内容的最佳方法? 在我理想的情况下, 添加的 生日将是一个超链接,点击该链接将显示一个编辑表单-与带有更新按钮的当前添加表单相同。 实时预览(插播) HTML: App.js: 问题答案: 您应该将表单放在每个节点内,分别使用和启用和禁用编辑。像这样: 这里的关键点是: 我已将控件更改为本地范围 已添加到,因此我们可以在编辑时显示它 添加了带有的,以便在编辑时隐藏内容

  • 通常,您不会在Vim中编辑文件。如果运行、编辑、写入和退出,则vim将取消的链接,并创建一个新文件和一个名为的新链接。但是,如果文件有多个链接,那么实际上会修改该文件。例如: 我一直在寻找一种真正编辑文件的方法,似乎有两种选择。使用,或使用,但要确保在编辑之前至少有两个指向该文件的链接。我想这个问题是学术性的,因为如果只有一个链接,vim创建一个新文件并不重要,如果在编辑过程中创建链接,vim似乎

  • grep 命令 sudo grep -c '500' fielename.log #查找文件包含500的行数 sudo cat index.html | grep -o 'js' #只输出文件中匹配到的部分 ps -aux | grep sshd #查找指定访问 ps -aux | grep 80 #查找指定端口 echo hello world | grep -i "HELLO" #查找

  • cmf_replace_content_file_url($content, $isForDbSave = false) 功能 替换编辑器内容中的文件地址 参数 $content: string 编辑器内容 $isForDbSave: boolean true:表示把绝对地址换成相对地址,用于数据库保存,false:表示把相对地址换成绝对地址用于界面显示 返回 string 替换过的编辑器内容

  • cmf_replace_content_file_url($content, $isForDbSave = false) 功能 替换编辑器内容中的文件地址 参数 $content: string 编辑器内容 $isForDbSave: boolean true:表示把绝对地址换成相对地址,用于数据库保存,false:表示把相对地址换成绝对地址用于界面显示 返回 string 替换过的编辑器内容

  • 介绍 收货地址编辑组件,用于新建、更新、删除收货地址。 引入 import { createApp } from 'vue'; import { AddressEdit } from 'vant'; const app = createApp(); app.use(AddressEdit); 代码演示 基础用法 <van-address-edit :area-list="areaList"