首页 > 解决方案 > 在 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

标签: sed

解决方案


编辑 :

正如@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>'

推荐阅读