的sed在我的tcsh腳本我有這個TCSH Shell腳本:替換變量使用內部文件
sed -i "s/^${y}$//g" $x
我如何得到這個工作?要麼我沒有改變,要麼像非法變量名稱或變量名稱一樣必須包含字母數字字符。嘗試了「」的不同組合。 ''在sed中。示例
sed 's/^'"${y}"'$//g' $x
的sed在我的tcsh腳本我有這個TCSH Shell腳本:替換變量使用內部文件
sed -i "s/^${y}$//g" $x
我如何得到這個工作?要麼我沒有改變,要麼像非法變量名稱或變量名稱一樣必須包含字母數字字符。嘗試了「」的不同組合。 ''在sed中。示例
sed 's/^'"${y}"'$//g' $x
在雙引號字符串中擴展變量名稱在tcsh中很棘手。在您的命令:
sed -i "s/^${y}$//g" $x
外殼或環境變量$y
的價值應該被正確地擴大,但外殼會盡量擴大$/
到$/
值,它作爲錯誤信息說是非法的變量名。
你的第二個命令:
sed 's/^'"${y}"'$//g' $x
是幾乎正確;它只是缺少-i
參數sed
。
這應該工作: 。 SED的/ ^「 」$ {Y}「 '$ // G' $ X
的{
和}
周圍y
不需要在這種情況下,所以你可以寫:
sed 's/^'"${y}"'$//g' $x
或者你也可以做這樣的:從雙引號單引號
sed -i "s/^$y"'$'"//g" $x
這最後一個版本開關和回雙,只是圍繞$
字符。這是一個值得強調的問題,無論您是僅使用您不希望展開的$
附近的單引號,還是僅使用您希望展開的$y
左右的雙引號。
更簡單地說,你可以通過\
它前面逃避雙引號字符串$
字符(我認爲這可能是特定於TCSH;原CSH可能沒有能夠做到這一點)。所以我覺得這是首選的方法 - 假設你有tcsh的,而不是老式的CSH:
sed -i "s/^$y\$//g" $x
我假設你想要做的是更新通過$x
在地方命名的文件,刪除包含在每行開頭的$y
中的字符串。這似乎是你想要做的,但我不能確定。