**题目:已知目标文件如下**
First Webh1Helloh1
h2Helloh2
h3Helloh3
请使文件中的内容输出为:
Hello
Hello
Hello
创建环境[root@oldboyedu36 ~]# cat >>html.txt<
>
>
First Web>
> h1Helloh1
> h2Helloh2
> h3Helloh3
>
>
> EOF[root@oldboyedu36 ~]# cat html.txt
First Webh1Helloh1
h2Helloh2
h3Helloh3
解题思路:sed替换+反向引用方法一:
[root@oldboyedu36 ~]# sed -nr '4,6s#(..)(.*)(..)#\2\3>#gp' html.txt
Hello
Hello
Hello
[root@oldboyedu36 ~]# sed -nr '4,6s#(h.)(.*)(h.)#\2\3>#gp' html.txt
Hello
Hello
Hello
方法二:[root@oldboyedu36 ~]# sed 's#h[1-9]#\#1' html.txt|sed 's#h[1-9]#\#2'
First WebHello
Hello
Hello
[root@oldboyedu36 ~]# sed -n '4,6s#h[1-9]#\#1p' 1.txt|sed 's#h[1-9]#\#2'
Hello
Hello
Hello
法三:终极版:
[root@oldboyedu36 ~]# sed -nr '{/h[1-9]/s###1;s#h[1-9]##2p}' html.txt
Hello
Hello
Hello
方法三:sed脚本[root@oldboyedu36 ~]# vim html.sh
/h[0-9]/{
s//\/1
s//\/2
}
[root@oldboyedu36 ~]# cat html.sh
/h[0-9]/{
s//\/1
s//\/2
}
[root@oldboyedu36 ~]# sed -f html.sh 1.txt|sed -n '4,6p'
Hello
Hello
Hello
其他方法:
awk '/Hello/{printgensub(/^(h[0-9])(.*)(h[0-9])/,"\\2\\3>","G")}'html.txt
本题主要以sed的正则和扩展正则为解题思路,其他方法:如awk中的gsub替换函数等,有兴趣的可以自行尝试。