替换&与()的运用
例:test文本,目的是让one two three加上“”号
<H1>This is a header one</H1>
<H2>This is a header two</H2>
<H3>This is a header three</H3>
:%s/ /([a-z]/+/)</"/1"/g
结果:
<H1>This is a header"one"/H1>
<H2>This is a header"two"/H2>
<H3>This is a header"three"/H3>
他缺了一个空格和<符号这说明了“/1”表示地内容为“[a-z]/+”,把前面“ /([a-z]/+/)<”内容替换了成[a-z]/+了
在看&结果
:%s/ /([a-z]/+/)</"&"/g
<H1>This is a header" one<"/H1>
<H2>This is a header" two<"/H2>
<H3>This is a header" three<"/H3>
从这个例子知道&表示的内容为: “ /([a-z]/+/)<”
可以区别 ()与 &的本质区别了吧
理解了()的运用后我们可以实现只把’one’,’two’,’three’加上引号的方法了,补上缺的部分就可以了
:%s/ /([a-z]/+/)</ "/1"</g
结果:
<H1>This is a header "one"</H1>
<H2>This is a header "two"</H2>
<H3>This is a header "three"</H3>
网上看到下面网友的问题刚学了sed想实、运用一下,同时对()的应用:
这里有一文件:ww.txt
其中内容如下:
wang|03/07/2004|104950|100|
zhang|03/07/2004|123224|200|
he|02/01/2004|85012|350|
......
现在,我需要将以上"ww.txt"中内容改为:
wang|2004-03-07 10:49:50|100
zhang|2004-03-07 12:32:24|200
he|2004-02-01 8:50:12|350
......
如何能够办到啊?
其中内容如下:
wang|03/07/2004|104950|100|
zhang|03/07/2004|123224|200|
he|02/01/2004|85012|350|
......
现在,我需要将以上"ww.txt"中内容改为:
wang|2004-03-07 10:49:50|100
zhang|2004-03-07 12:32:24|200
he|2004-02-01 8:50:12|350
......
如何能够办到啊?
只用sed命令实现
sed "s/|/(...../)|/|0/1|/;s//([a-z]/+|/)/([0-9]/+/)///([0-9]/+/)///([0-9]/+/)|/(../)/(../)/(../)|/([0-9]/+/)|//1/4-/2-/3|/5:/6:/7|/8/" ww.txt
不过也算是解决了问题