我在一個文本檔案中輸入了以下行:
\[Omega]BD=100;
我想用100
shell 變數(zsh shell)替換 gsed 的值,這里600
:
我試過了 :
$ i=600
$ gsed 's/\[Omega]BD=.*/\[Omega]BD=\'\\"$i"\\';/' text_to_modify.txt | grep 600
但它回傳我:
\[Omega]BD=\600;
并不是\[Omega]BD=600;
這是我不想要的額外反斜杠,我想知道如何洗掉這個反斜杠。我想保留 2 個單引號gsed 's/.../.../'
任何想法 ?
uj5u.com熱心網友回復:
使用sed
;
i=600
$ sed "/\[Omega]/s/[[:digit:]]\ /$i/" input_file
\[Omega]BD=600;
uj5u.com熱心網友回復:
你可以使用這個sed
命令:
i=600
sed -E "s/(\\\\\[Omega]BD=).*/\1$i;/" file
\[Omega]BD=600;
我們需要額外的轉義,即\\\\
匹配單個\
,因為我們在完整的 sed 命令周圍使用雙引號。
或者我們可以避免您可以使用這種單引號和雙引號的組合來避免額外的轉義:
sed -E 's/(\\\[Omega]BD=).*/\1'"$i;/" file
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/487144.html
下一篇:如何宣告變數并在后續查詢中使用它