首先我們介紹有關於vim和sed 共同的參數選擇
我們先列舉每個代表的意思,下面會詳細介紹用法:
a :新增, a 的后面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!
d :刪除,因為是刪除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而這些字串會在新的一行出現(目前的上一行);
s :取代,可以直接進行取代的工作哩!
再來看我們原始的文件樣式:
一、vim如何在行首/行尾添加字符 , 如何替換文件的字符
1、vim如何在行首/行尾添加字符 刪除字符
1)行首/行尾添加字符
:%s/^/Y/g 其中%
表示所有行,s
表示替換,^
代表行首,也可以用$
代表行尾。其中%s 也可以使用1,2s替換代表第一行第二行進行添加,例如1,2s/^/Y/g
舉個栗子:2,4s/$/#good/g:
2)行首/行尾刪除字符
:%s/^.\{n\}
// 刪除行首n個字符
其中正則表達式"/^.\{n\}//"
中,.
表示要刪除的字符個數,".{n}"表示刪除n個字符,可用n個"."表示;
:%s/.\{n\}$
// 刪除行尾n個字符
舉個栗子:1,3s/.\{4\}$//
2、 如何替換文件的字符
%s/X/Y/g 其中X代表要被替代的字符,Y代表替換X的字符
g 放在命令末尾,表示對搜索字符串的每次出現進行替換;不加 g,表示只對搜索
字符串的所在行首次出現進行替換;g 放在命令開頭,表示對正文中所有包含搜索字符串的行進行替換操作。
舉個栗子:2,3s/test/good/g:
此外:
可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符,此種用法可在c++多行注釋下使用
二、sed 命令直接替換文件中的字符
sed是一個“非交互式的”面向字符流的編輯器。能同時處理多個文件多行的內容,可以不對原文件改動,把整個文件輸入到屏幕,可以把只匹配到模式的內容輸入到屏幕上。還可以對原文件改動,但是不會再屏幕上返回結果。
sed命令的語法格式:
sed的命令格式: sed [option] 'sed command' filename
sed的腳本格式:sed [option] -f 'sed script' filename
sed命令的選項(option):
-n :只打印模式匹配的行
-e :直接在命令行模式上進行sed動作編輯,此為默認選項
-f :將sed的動作寫在一個文件內,用–f filename 執行filename內的sed動作
-r :支持擴展表達式
-i :直接修改文件內容
結合我們一開始提到的選項內表達式,我們現在可以進行簡單的sed操作。
1)替換文件中的字符:
舉個栗子1:sed -i s/test/good/g test_for_vim_sed //替換文件中所有的test為good 並且該操作 作用於文件本身。去掉-i 只是將操作結果打印到終端。(保存文件名為test_for_vim_sed)
舉個栗子2:sed -i 1,2cgoodjob test_for_vim_sed //替換文件中第一第二行 為goodjob,兩行變一行
舉個栗子3:sed -i 1,2agoodjob test_for_vim_sed //在文件中第一和第二行的下一行添加goodjob,總共四行。
其中刪除行首和行尾元素 可以參考vim的用法。兩者很相似,有關sed的高級用法可以參考博客: