首页 > 代码库 > sed正则经典例题
sed正则经典例题
**题目:已知目标文件如下** <html> <title>First Web</title> <body> h1Helloh1 h2Helloh2 h3Helloh3 </body> </html> 请使文件中的内容输出为: <h1>Hello</h1> <h2>Hello</h2> <h3>Hello</h3>
创建环境
[root@oldboyedu36 ~]# cat >>1.txt<<EOF > <html> > <title>First Web</title> > <body> > h1Helloh1 > h2Helloh2 > h3Helloh3 > </body> > </html> > EOF
[root@oldboyedu36 ~]# cat 1.txt <html> <title>First Web</title> <body> h1Helloh1 h2Helloh2 h3Helloh3 </body> </html>
解题思路:sed替换+反向引用
方法一: [root@oldboyedu36 ~]# sed -nr ‘4,6s#(..)(.*)(..)#<\1>\2</\3>#gp‘ 1.txt <h1>Hello</h1> <h2>Hello</h2> <h3>Hello</h3> [root@oldboyedu36 ~]# sed -nr ‘4,6s#(h.)(.*)(h.)#<\1>\2</\3>#gp‘ 1.txt <h1>Hello</h1> <h2>Hello</h2> <h3>Hello</h3>
方法二: [root@oldboyedu36 ~]# sed ‘s#h[1-9]#\<&\>#1‘ 1.txt|sed ‘s#h[1-9]#\<&/\>#2‘ <html> <title>First Web</title> <body> <h1>Hello<h1/> <h2>Hello<h2/> <h3>Hello<h3/> </body> </html> [root@oldboyedu36 ~]# sed -n ‘4,6s#h[1-9]#\<&\>#1p‘ 1.txt|sed ‘s#h[1-9]#\<&/\>#2‘ <h1>Hello<h1/> <h2>Hello<h2/> <h3>Hello<h3/>
方法三: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‘ <h1>Hello</h1> <h2>Hello</h2> <h3>Hello</h3>
本题主要以sed的正则和扩展正则为解题思路,其他方法:如awk中的gsub替换函数等,有兴趣的可以自行尝试。
sed正则经典例题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。