regex - 使用 sed 根据在文件中该行的前两个单词上找到该行来替换该行的单词
问题描述
在网上浏览并尝试了许多关于 unix sed cmd 和正则表达式的文章后,我仍然无法实现我想要的。请帮助我实现这一目标。我有一个文件 Gemfile,在此我想根据前两个单词找到一行并替换该行上的另一个单词。如何在 ubuntu 中使用 sed cmd 实现这一点。我的 Gemfile 是这样的:-
gem 'retryable'
gem 'roo'
gem 'autoprefixer-rails', '8.6.5'
gem 'music', branch:'mae-45124', git: vhl_repo('mymusic')
gem 'aws-sdk', '~> 3.0'
在这个文件中,我想首先使用前两个单词搜索一行,即 gem 'retryable' gem 'roo' gem 'autoprefixer-rails', '8.6.5' gem 'music', branch:'mae-45124', git: vhl_repo('music') gem 'aws-sdk', '~> 3.0' 然后替换给定分支的值,例如在这种情况下为'mae-45124' 我试过使用这个 cmd bu 这给出了这个错误 - >
sed -i -e "/^gem \'music\'.*/s/mae-45124/mae-44444" Gemfile
错误来了: -
sed: -e expression #1, char 34: unterminated `s' command
我想将这一行从:-
gem 'music', branch:'mae-45124', git: vhl_repo('music')
更改为
gem 'music', branch:'mae-44444', git: vhl_repo('music ')
请告诉我如何实现这一目标。任何帮助将不胜感激。在此先感谢。
解决方案
这将起作用:
sed -ir "/^gem 'music'.*/s/mae-45124/mae-44444/" Gemfile
你不需要逃跑'
,因为你"
在他们周围使用。
在某些情况下,您可能需要逃跑-
。
而你自己的解决方案没有最后一个'/',就是完成s
命令。
推荐阅读
- python - 如何在我的 views.py 中引用 OneToOne 模型?
- javascript - 在 selected.jquery 完成执行后运行我的脚本
- r - 删除前 10 个和后 10 个值
- typescript - 在 Typescript 中索引其他属性的属性
- c# - 从字符串生成的 guid,它的值是否始终相同?
- javascript - TypeError: e.nodeName 在 laravel 中未定义
- python - 如何使用 matplotlib 获取包含多个图形的多个窗口?
- javascript - 更改语言后如何通过 react-router-dom 重新加载页面(react-i18next)
- typescript - 上传时功能部署错误以减小图像大小
- angular - 我可以将 async/await Promises 与可观察的 RXJS 混合使用吗?