在SED中如何通过特定的单词查找行,将行替换为其他内容

时间:2019-01-23 14:26:54

标签: sed

如何用单词找到一行并用内容替换整个行?

这就是我所拥有的,要在任务后插入的变量:+ 6个字符 WG =“ AREA001”

原件: '打印-处理:14052549任务:001伦敦'

预期结果: '打印-处理: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>

解决方案:

cat test.xml | sed -e“ s |。主题。| $ WG |” > t.xml

1 个答案:

答案 0 :(得分:0)

编辑:

正如@Glenn所纠正的那样,变量$ WG的内容包含/,因此需要转义:

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>'