**题目:已知目标文件如下** <html> <title>First Web</title> <body> h1Helloh1 h2Helloh2 h3Helloh3 </body> </html> 请使文件中的内容输出为: <h1>Hello</h1> <h2>Hello</h2> <h3>Hello</h3>
创建环境
[[email protected] ~]# cat >>1.txt<<EOF > <html> > <title>First Web</title> > <body> > h1Helloh1 > h2Helloh2 > h3Helloh3 > </body> > </html> > EOF
[[email protected] ~]# cat 1.txt <html> <title>First Web</title> <body> h1Helloh1 h2Helloh2 h3Helloh3 </body> </html>
解题思路:sed替换+反向引用
方法一: [[email protected] ~]# sed -nr ‘4,6s#(..)(.*)(..)#<\1>\2</\3>#gp‘ 1.txt <h1>Hello</h1> <h2>Hello</h2> <h3>Hello</h3> [[email protected] ~]# sed -nr ‘4,6s#(h.)(.*)(h.)#<\1>\2</\3>#gp‘ 1.txt <h1>Hello</h1> <h2>Hello</h2> <h3>Hello</h3>
方法二: [[email protected] ~]# 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> [[email protected] ~]# 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脚本 [[email protected] ~]# vim html.sh /h[0-9]/{ s//\<&\>/1 s//\<\/&\>/2 } [[email protected] ~]# cat html.sh /h[0-9]/{ s//\<&\>/1 s//\<\/&\>/2 } [[email protected] ~]# sed -f html.sh 1.txt|sed -n ‘4,6p‘ <h1>Hello</h1> <h2>Hello</h2> <h3>Hello</h3>
本题主要以sed的正则和扩展正则为解题思路,其他方法:如awk中的gsub替换函数等,有兴趣的可以自行尝试。
时间: 2024-10-10 20:59:57