sed -i 命令常用方法總結


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM