2016-04-08 52 views
2

我正在寫一個很好的正則表達式來替換文本文件中的一些IP。sed:unterminated''command`

sed -r "s/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/${APP_IP}/g" /path/to/my/file 

但是它給:sed: -e expression #1, char 49: unterminated 's' command

我所需要的雙引號,否則它替換所需的字符串用文字變量名:$ {} APP_IP

我缺少什麼?

+1

無法重現您的問題 - 「APP_IP」的值是什麼? –

+3

這個問題很可能是'$ APP_IP'中存在的'/',換行符或其他終止字符。 –

+0

你的代碼對我來說工作正常:) – Joda

回答

0

已解決:當我將變量$ APP_IP手動設置爲被測IP時,似乎正在工作。如果我從輸出(ping的)中捕獲變量,它會給出錯誤。必須是變量中的特殊字符。多謝你們。

+0

輸出是否包含換行符? –

+1

是的,我把它拿出來用APP_IP = $(echo $ APP_IP | tr -d'\ n'),它工作:) – arush436

+0

你可以做APP_IP = $(echo -n「$ APP_IP」) – edi9999