我有 45 行代碼需要 sed 命令。由于最近 GNU 的變化,我所有的腳本都被破壞了,需要 -std=legacy 和 -fallow-invalid-boz。我知道如何做到這一點的唯一方法是使用 sed。我不是計算機程式員,sed 簡單易懂。
這些是我的 sed 命令示例。

有沒有辦法在回圈中或使用 sed 本身執行所有這些 sed 命令。如果有另一個編輯器讓它更容易,我也可以嘗試學習。
我試過這個
for X in [24,28,32,36,40,45,49,53,56,60,64,68,69,73,74,79]
sed -i '$Xs/= /= -std=legacy -fallow-invalid-boz /g' $HOME/WRF/Downloads/NCEPlibs/macros.make.linux.gnu
done
但我得到了錯誤:
$ for X in [24,28,32,36,40,45,49,53,56,60,64,68,69,73,74,79] sed -i '$Xs/= /= -std= legacy -fallow-invalid-boz /g' $HOME/WRF/Downloads/NCEPlibs/macros.make.linux.gnu done bash:語法錯誤接近意外令牌
sed' bash: syntax error near unexpected token完成'
uj5u.com熱心網友回復:
這樣做更聰明
y="24 28 32 36 40 45 49 53 56 60 64 68 69 73 74 79"
for X in $y; do
sed -i "${X}s/= /= -std=legacy -fallow-invalid-boz /g" $HOME/WRF/Downloads/NCEPlibs/macros.make.linux.gnu
done
首先,您忘記了for中的do陳述句,因此 for 陳述句甚至在執行之前就會失敗。
其次 [24,28,32,36,40,45,49,53,56,60,64,68,69,73,74,79]對于使用換行符和/或空格來宣告新值從左到右。
最后但同樣重要的是,在此示例中使用$X無效,因為 bash 將其讀取為$Xs/所以使用${X}是正確的方法,當然使用""而不是使用''所以${X}可以實際使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/486708.html
上一篇:Delphi用2個while回圈排序,需要去掉一個變數
下一篇:試圖了解流量控制/圖表
