Awk 如何用标签包装包含字符的字符串?
您好,我是Linux noob,我想知道如何用标记替换以“/”开头的行。Awk 如何用标签包装包含字符的字符串?,awk,sed,tags,Awk,Sed,Tags,您好,我是Linux noob,我想知道如何用标记替换以“/”开头的行。 下面是一个例子: /Foo is awesome 我想得到 <i>Foo is awesome</i> Foo太棒了 我将感谢任何帮助 您可以尝试下面的sed命令 $ sed 's~^/\(.*\)~<i>\1</i>~' file <i>Foo is awesome</i> $sed的~^/\(.\)~\1~文件 福太棒了 通过awk $
下面是一个例子:
/Foo is awesome
我想得到
<i>Foo is awesome</i>
Foo太棒了
我将感谢任何帮助 您可以尝试下面的sed命令
$ sed 's~^/\(.*\)~<i>\1</i>~' file
<i>Foo is awesome</i>
$sed的~^/\(.\)~\1~文件
福太棒了
通过awk
$ awk '/^\//{sub(/^\//,"<i>");sub(/$/,"</i>")}1' file
<i>Foo is awesome</i>
$awk'/^\/{sub(/^\/,“”);sub(/$/,“”)1文件
福太棒了
您可以将awk与substr
一起使用,如下所示:
awk '/^\//{$0 = "<i>" substr($0,2) "</i>"}1' file
awk'/^\/{$0=”“substr($0,2)”“}1”文件
当行的开头有一个/
时,追加标记并使用substr
从原始行中删除斜杠1
为true
因此awk对每一行执行默认操作,即打印该行。sed'\\\\\^/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\^/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
sed '\#^/# {s//<i>/;s#$#</i>#;}' YourFile
# or (with maybe space before)
sed '\#^ */# {s//<i>/;s#$#</i>#;}' YourFile
#或者(前面可能有空格)
sed“\\\^*/{s///s$\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
另一种sed方式是,这允许在这一行上工作(如果有其他事情要做,而不是简单地通过标记查找)$awk'sub(“^/”,“){$0=$0”“}1”文件
福太棒了
工作起来很漂亮。谢谢因此sub
的返回值指示模式是否匹配?是。sub()和gsub()的返回值是regexp的匹配次数,在sub()的情况下,返回值只能是1或0。
$ awk 'sub("^/","<i>"){$0 = $0 "</i>"} 1' file
<i>Foo is awesome</i>