求教vi批量替換問題:我想把<li>..</li>各個組,前面加上<ul>,后面加上</ul>.不知道這個應該怎么寫!
uj5u.com熱心網友回復:
就用sed的替換就好了 sed 's/<li>/<ul><li>/;s/<\/li>/<\/li><\/ul>/' file.txt ,這個只是列印,不修改源檔案,加-i 選擇就是修改原檔案sed -i 's/<li>/<ul><li>/;s/<\/li>/<\/li><\/ul>/' file.txt 把<li>替換成<ul><li> ; 把</li>替換成</li></ul>或者用vi里面的替換
:%s/<li>/<ul><li>/g
:%s#</li>#</li></ul>#g (避免和/ul的斜杠沖突,用#分隔)
還一種方案就是匹配含有<li>的行,把行首符^替換成<ul>,行尾符$替換成</ul>
sed -i '/<li>/s/^/<ul>/' file.txt
sed -i '/<li>/s/$/<\/ul>/' file.txt
uj5u.com熱心網友回復:
你用的vi還是vim呢看看下面的輸出指向哪
readlink -e $(which vi)
除了使用替換功能(無論是vim自己的還是sed亦或是awk),
僅對于開頭或結尾還可以這樣:
# 在替換段的第一行
# command mode
0
# visual mode
Ctrl+v
# 移動到替換段的最后一行
j # many times
# insert mode
I
# 輸入想要的字符
<ul>
# 回到command mode
ESC
# 等一會會,看結果
對于在末尾處添加,做如下改動
0 -> $
I -> A
uj5u.com熱心網友回復:
有沒有更好的方法呢?頂上去!!轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/9757.html
標籤:UNIX文化
