sed用法
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...
-i[SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
1,刪除指定行:
sed -i 'Nd' filename 【N 為行數】 特別的,刪除最后一行為: sed -i '$d' filename 【$ 代表的是最后一行】 【提示】: cat -n filename //可以從1開始輸出顯示行號 grep -n "指定行內容" filename //顯示指定行行號
2,插入到某行
①知道該行行號 sed -i 'Ni 要添加內容' filename //第N行插入要添加的內容,原來該行的內容后移 ②知道該行內容: 插入到某行上面 sed -i '/定位字符串/i 插入字符串' filename 插入到某行下面 sed -i '/定位字符串/a 插入字符串' filename 補充,文末增加一行可使用如下語句: echo "\n插入字符串" >> filename
3,替換某字符串
①知道該行行號 sed -i 'Nc 替換內容' filename //替換第N行內容 ②知道該行內容 sed -i 's/原字符串/替換字符串/' filename sed -i 's/原字符串/替換字符串/g' filename 說明:
s///: 從每一行的行首開始,匹配到第一個符合的字段,就會跳到下一行(同一行中可能有多個匹配字段)
s///g:表示全局替換,匹配每一行從行首到行尾的所有字符
4,替換字符串中部分內容,其實是3的升華用法
sed -i 's/^\(字符串段1\).*\(字符串段2\)$/\1放入替換段1與段2之間的內容\2/' filename
解讀:
^是正則表達式匹配字符串開始位置
$是正則表達式匹配字符串結束位置
\1引用了第一個()匹配到的內容
\2引用了第二個()匹配到的內容
.*為兩對括號中間的所有內容
5,指定行添加刪除注釋
添加注釋 加【#】: sed -i 's/^指定行字符串/#&/g' filename 加【//】: sed -i 's/^指定行字符串/\/\/&/g' filename (//由於有特殊含義,前面加\去掉特殊含義) 舉例: > on property:sys.boot_completed=1 > start gps_upgrade > root:/vendor/etc/init/hw # sed -i 's/^.*start gps.*/#&/' init.tmp.rc (字符串不一定要寫完整行,能唯一標識這一行即可。符合條件的字符串會全部都被添加上注釋) > root:/vendor/etc/init/hw # > root:/vendor/etc/init/hw # cat init.tmp.rc > on property:sys.boot_completed=1 > # start gps_upgrade 刪除注釋 sed -i 's/^#\(指定行字符串\)/\1/g' filename