sed - 在 SED 中如何通过特定单词查找一行,将该行替换为另一个内容
问题描述
如何通过单词找到一行并将整行替换为内容?
这就是我所拥有的,要在 Task: + 6 characters WG="AREA001" 之后插入的变量
原文:'印刷 - 进程:14052549 任务:001 LONDON'
预期结果:'打印 - 进程:14052549 任务:001 AR:AREA001 LONDON'
WG = '<subject>Print Card Workgroup XXXXX Task: 001</subject>
cat test1.xml | sed -e "s/<subject>\<subject>$WG" > test2.xml
错误:
/gd: command garbled: s/<subject>/<subject>Print Card Workgroup XXXXX Task: 001</subject>
采取的解决方案:
猫测试.xml | sed -e "s|.主题.|$WG|" > t.xml
解决方案
编辑 :
正如@Glenn 所纠正的,变量 $WG 的内容包含 a /
,因此需要转义:
sed -e "s/^.*\<subject\>.*$/${WG//\//\\\/}/"
要将包含该单词的任何行替换<subject>
为变量的内容WG
:
cat test1.xml | sed -e "s/^.*\<subject\>.*$/$WG/g"
正如@Benjamin 所说,您需要=
在分配变量时删除周围的空格:
WG='<subject>Print Card Workgroup XXXXX Task: 001</subject>'
推荐阅读
- h2 - Derby 的 H2 INIT 等效项
- r - 基于条件的滞后数据(非固定滞后)
- bash - 如何在两种模式之间读取文件Shell
- c++11 - std::map 的 std::_Rb_tree 副本导致递归导致 SEGSEV 具有 4000+ 深的核心转储调用堆栈
- powershell - Powershell - 拆分/组织属性的方法?
- docker - 为什么我的 Play Framework for Scala 应用程序的 Docker 映像没有以 AccessDeniedException 开头?
- node.js - 如何在nodejs中动态调用节点调度程序
- google-apps-script - 有没有办法让这个功能在触发时不会超时?
- emacs - 元密钥在 Emacs 中无法使用邪恶模式(即使在 Gui 版本中)(MAC)
- python - SHA256 在 Python Vs TypeScript 中散列正文和 base64 编码