我不是bash編碼的專家,我想做一個類似互動式的代碼來幫助我的作業。
我有一個包含一些數字(坐標)的檔案,我試圖做一個代碼,從檔案中讀取一些特定的數字,然后將它們存盤在一個陣列中。使用一些算術運算修改該陣列,然后用修改后的陣列替換原始檔案中的數字。到目前為止,除了替換檔案中的數字,我已經做了所有的事情,我試著用sed,但它沒有改變檔案。原來的數字存盤在一個名為 "readfile "的陣列中,新的數字存盤在一個名為 "d "的陣列中。
我試圖以這種方式使用 sed。sed -i 's/${readfile[$j]}/${d[$k]}/' file.txt
而我回圈j和k來覆寫陣列中的所有數字。一切似乎都在作業,但檔案卻沒有被修改。經過一些調查,我注意到 sed 沒有讀取陣列的值,但我不知道如何解決這個問題。
真的很感謝你的幫助。
uj5u.com熱心網友回復:
當一個檔案沒有被sed -i修改時,這意味著sed沒有找到任何可以修改的匹配。你的模式是錯誤的。
在使用 " 而不是 ' 以使變數可以在字串中被評估后,查看 readfile 陣列的內容,并檢查它是否真的與文本匹配。如果它看起來是匹配的,尋找模式中的特殊字符,這些字符對sed來說意味著一些特殊的東西(最常見的錯誤是/,它將干擾搜索命令)。
對特殊字符的修復方法是:(1) 轉義,例如 /,而不是僅僅使用/,或者(2)(特別是對于/)使用另一個分隔符來搜索/替換命令(而不是s/foo/bar/,你可以使用s|foo|bar|或者s,foo,bar,等等 - 幾乎任何分隔符都行,所以你可以選擇一個你知道不在模式字串中的字符)。
如果你發布資料樣本和更多你的腳本,我們可以看看你哪里出了問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/308104.html
標籤:
