[問題] 關於sed二三問

看板Linux作者 (mystea)時間16年前 (2009/07/19 16:18), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
我想用 script + sed 把一個很長檔案的某一行(明確起見, 暫定為第65行)改掉 (總共要改個幾百次, 第一次改成a1, 第二次改成a2,...餘類推.) 假設loop variable叫做number. 我想用的sed指令是 sed -e "65 c\ a$number" filename>tmp ; tmp>filename 但是這樣的話sed會回傳 Function 65 c\ a$number cannot be parsed. 後來發現, 要能成功使用c這個指令, 好像一定要先產生一個指令檔案 cfile: 65 c\ a$number 然後用 sed -f cfile filename才能成功. Q1: 所有用c的sed指令, 真的都一定要先產生一個cfile嗎? 會這樣問, 主要是因為要在script裡on the fly產生cfile不是很容易. Q2: 有沒有辦法讓sed直接去原檔案的第65行更改內容, 而不是把第65行改了存成新檔再 覆蓋原檔? (如果原檔很長, 這樣sed -e "65 c\ a$number">tmp; tmp>filename 還挺浪費系統資源的) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 169.232.152.82

07/19 18:38, , 1F
sed -i可以用的話可以直接改檔案內容
07/19 18:38, 1F
文章代碼(AID): #1AOjRgO_ (Linux)