如何使用bash附加到包含文件中匹配模式的行的开头和结尾?

时间:2017-09-01 06:57:10

标签: bash sed

如果存在某个字符串,我需要在行的开头添加<!--,并在xml文件中的每一行的行末尾添加-->。所以,例如,如果BlueCard是我要匹配的字符串,文件当前是这样的:

RedCard
BlueCard
GreenCard

我希望新文件看起来像:

RedCard
<!--BlueCard-->
GreenCard

如何做到这一点?

3 个答案:

答案 0 :(得分:4)

使用sed:

sed 's/.*BlueCard.*/<!--&-->/' file

答案 1 :(得分:0)

您也可以匹配模式,然后对所有匹配的行应用替换(s)。

sed '/BlueCard/ s/.*/<!--&-->/' test
  • &在此处选择与.*
  • 匹配的所有内容

答案 2 :(得分:0)

尝试awk一次。

awk '/BlueCard/{print "<!--" $0 "-->";next} 1'  Input_file

因此,如果它找到字符串BlueCard然后在该行中查找该行,那么使用next将不会跳过所有进一步的语句。使用1将打印除BlueCard之外的所有内容,因为它已经被条件本身所照顾。

解决方案第二:在这里使用awk的子实用程序。

awk '{sub(/BlueCard/,"<!--&-->")} 1'   Input_file

在这里简单地用字符串BlueCard替换注释并打印所有内容。