[問題] 如何使用 sed 修改檔案內容?

看板Linux作者 (阿朱哥)時間8年前 (2016/04/07 14:59), 8年前編輯推噓1(107)
留言8則, 3人參與, 最新討論串1/1
我想修改 /etc/hosts 檔案裡面的某一行 本來是傻傻的直接去修改那一行 sed -i "5c $iip fl01.com" /etc/hosts 但是後來覺得這樣有點風險 因為萬一改天忘記了去改變到行數、修改就有可能失敗 所以想請教有沒有辦法針對不特定的行數去做修改 變動的是前面的 ip 不變的是後面的 fl01.com -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.170.2 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1460012382.A.833.html

04/07 15:41, , 1F
先用/pattern/去找你要的行數…
04/07 15:41, 1F
我現在改成先用 nl + grep 去找 fl01.com 的行數 但是這招跨主機的時候好像會失效、還要再研究看看 只是想知道有沒有更簡單的方法 ※ 編輯: zhucc (220.132.170.2), 04/07/2016 16:09:05

04/07 16:19, , 2F
sed -i -r "s/^[0-9.]+\\s+fl01\.com\$/$iip fl01.com/"
04/07 16:19, 2F

04/07 16:22, , 3F
\\. 打錯了也行?原來有容錯
04/07 16:22, 3F
感謝^^ ※ 編輯: zhucc (220.132.170.2), 04/07/2016 16:34:45

04/07 17:43, , 4F
sed -i -r '/\s+fl01\.com\s+$/c '$iip' fl01.com' \
04/07 17:43, 4F

04/07 17:43, , 5F
/etc/hosts
04/07 17:43, 5F

04/07 17:44, , 6F
或者不用 extended regexp
04/07 17:44, 6F

04/07 17:45, , 7F
sed -i '/ fl01\.com$/c '$iip' fl01.com' /etc/hosts
04/07 17:45, 7F
謝謝、我來研究一下 對這塊沒有那麼熟 ※ 編輯: zhucc (220.132.170.2), 04/07/2016 21:53:26

04/14 14:53, , 8F
sed -i "s/^.*[ \t]fl01\.com.*$/${iip} fl01.com/"
04/14 14:53, 8F
文章代碼(AID): #1N1WLUWp (Linux)