如何使用标签包装字符的字符串?

问题描述:

嗨,我是Linux noob,我会知道如何用标记替换以“/”开头的行。
下面是一个例子:如何使用标签包装字符的字符串?

/Foo is awesome 

,我想获得

<i>Foo is awesome</i> 

我希望得到任何帮助!

你可以用awk与substr这样的:

awk '/^\//{$0 = "<i>" substr($0,2) "</i>"}1' file 

当有/在该行的开头添加标签并使用substr从原始行删除斜杠。 1true所以awk将为每行打印行的默认行为。

+1

作品。谢谢! – eagleeyetom 2014-10-03 11:37:39

你可以试试下面的sed命令,

$ sed 's~^/\(.*\)~<i>\1</i>~' file 
<i>Foo is awesome</i> 

通过AWK,

$ awk '/^\//{sub(/^\//,"<i>");sub(/$/,"</i>")}1' file 
<i>Foo is awesome</i> 

sed '\#^/# {s//<i>/;s#$#</i>#;}' YourFile 
# or (with maybe space before) 
sed '\#^ */# {s//<i>/;s#$#</i>#;}' YourFile 

另一个SED方式,这允许在这条线做工精美(如果其他事情做,而不是简单地按标签sourround)

$ awk 'sub("^/","<i>"){$0 = $0 "</i>"} 1' file 
<i>Foo is awesome</i> 
+0

所以'sub'的返回值表示模式是否匹配? – 2014-10-04 01:04:54

+1

是的。 sub()和gsub()的返回值是regexp匹配的次数,sub()只能是1或0。 – 2014-10-04 01:28:40