我有四個名爲source,correct,wrong和not_found的文件。我試圖在bash中編寫腳本,其中我從源文件中讀取每行,將行存儲爲變量x,並將其與條件匹配。Bash:從匹配變量的文件中刪除一行
如果它通過,那麼我需要將該行寫入文件名爲correct,但是catch在寫入到正確前我需要檢查變量x當前是否存在於名爲wrong的文件中,如果是,請刪除它,然後將該行添加到名爲correct的文件。
下面我都試過了,但它不修改該文件並沒有給我任何輸出:
sed -i '/$x/d' ./wrong
我想你的意思是'sed',而不是'send'。如果你使用單引號,就不會有擴展,所以你實際上是在尋找'$ x'(字面上),而不是那個變量的內容。改爲使用雙引號:'sed -i「/ $ x/d」。/ wrong「 –
感謝您指出錯誤。這實際上是我的iPad做自動更正。我現在糾正了錯誤。 –
'sed'不修改文件:從標準輸入中讀取並在標準輸出上寫入。您需要將結果放在某處,然後替換原始文件。如:'sed -i'/ $ x/d'./wrong> ./wrong.new && mv ./wrong ./wrong.old && mv ./wrong.new。/ wrong'(如果您想保留舊的副本)。 – fernand0