如何使用 sed 修改檔案內容? - Linux

Table of Contents

我想修改 /etc/hosts 檔案裡面的某一行

本來是傻傻的直接去修改那一行

sed -i "5c $iip fl01.com" /etc/hosts

但是後來覺得這樣有點風險
因為萬一改天忘記了去改變到行數、修改就有可能失敗
所以想請教有沒有辦法針對不特定的行數去做修改

變動的是前面的 ip

不變的是後面的 fl01.com

--

All Comments

William avatarWilliam2016-04-11
先用/pattern/去找你要的行數…
Madame avatarMadame2016-04-15
sed -i -r "s/^[0-9.]+\\s+fl01\.com\$/$iip fl01.com/"
Edward Lewis avatarEdward Lewis2016-04-18
\\. 打錯了也行?原來有容錯
Christine avatarChristine2016-04-18
sed -i -r '/\s+fl01\.com\s+$/c '$iip' fl01.com' \
/etc/hosts
Olive avatarOlive2016-04-21
或者不用 extended regexp
Genevieve avatarGenevieve2016-04-25
sed -i '/ fl01\.com$/c '$iip' fl01.com' /etc/hosts
Oscar avatarOscar2016-04-26
sed -i "s/^.*[ \t]fl01\.com.*$/${iip} fl01.com/"