為什麼 sed 命令輸出“char 5:未終止的`s'命令”

為什麼 sed 命令輸出“char 5:未終止的`s'命令”

我運行瞭如下命令來調試我的腳本,但它不起作用。

$ L="Thanh,Fri 11 Nov, Mon 14 Nov,LX,VN" 
$ B="Fri 11 Nov, Mon 14 Nov"
$ N="11.11-14.11"
$ sed 's/'$B'/'$N'/' <<< $L
sed: -e expression #1, char 5: unterminated `s' command

請你幫助我好嗎?

答案1

這是因為 - 擴充功能中存在未加引號的空格,$B您可以set -x在 shell 中使用來驗證:

$ set -x
$ sed 's/'$B'/'$N'/' <<< $L
+ sed s/Fri 11 Nov, Mon 14 Nov/11.11-14.11/
sed: -e expression #1, char 5: unterminated `s' command
$ set +x

(注意 sed 如何接收單獨的參數s/Fri 11 Nov,等)。

您可以使用

sed 's/'"$B"'/'"$N"'/' <<< "$L"

或者更簡單地說

sed "s/$B/$N/" <<< "$L"

前任。

$ set -x
$ sed "s/$B/$N/" <<< "$L"
+ sed 's/Fri 11 Nov, Mon 14 Nov/11.11-14.11/'
Thanh,11.11-14.11,LX,VN
$ set +x

相關內容