我在MINIX上寫了一個BASH shell腳本,我想用一個字符串替換整個文件的特定行號,並且這個替換爲overwriten to原始文件。未印在stdout
上。sed:用數字替換整行覆蓋原文件
行和替換字符串的數字是具有下列名稱的腳本變量:
line (e.g. 8)
repstring (e.g. "134|Wan|Cho|1988-03-20")
於是我米嘗試下面的代碼:
sed -i "${line}s/.*/${repstring}/" $filename
但是,當我嘗試執行腳本我得到的消息:
sed: unknown option -- i
usage: sed [-aEnr] script [file ...]
sed [-aEnr] [-e script] ... [-f script_file] ... [file ...]
是否有可能使此文件editi以另一種方式?
p.s.我知道將sed
的輸出重定向到一個新文件,然後將新文件移動到原始文件,但我不想在此過程中創建任何其他文件。
看來你的-i參數是無效的。看着sed的手冊頁。 -i參數需要一個擴展名,在這種情況下你沒有添加一個擴展名。 –
我剛剛在這裏閱讀:http://www.grymoire.com/Unix/Sed.html#uh-62h 但我alreade嘗試'pkgin update'和'pkgin install sed',但它說數據庫已經啓動-至今。那麼手動安裝該擴展的正確方法是什麼? –
@ClaudioCorsi'-i'選項不需要擴展就可以進行就地編輯,但添加擴展名(例如'-i.bak')將創建原始文件的備份,現在有一個' .bak'擴展名。 – assefamaru