2017-04-06 40 views
0

我試圖使用sed文件替換詞。 在同一bash劇本我用命令:bash命令SED被輸出一個意外的錯誤

sed -i "s/${list[$index]}/${phone}/g" $1 

而且它的第一功能的工作完美,但第二個功能我寫道:

sed -i "s/${list[$index]}/${zipcode}/g" $1 

輸出這樣的錯誤:

sed: -e expression #1, char 0: no previous regular expression 

我真的絕望了,我敢肯定,這是一個愚蠢的錯誤,我做什麼,但我不能把它整理出來

+0

是這樣的郵政編碼= 4763A5它不包含任何特殊字符,它僅包含十六進制字符。這同樣適用於電話 – domenic

+0

不,只有十六進制字符也在那裏。我發現它很奇怪,因爲它們幾乎是一個複製/粘貼 – domenic

+0

嘗試使用不同的sed命令分隔符(即'sed -i「s | $ {list [$ index]} | $ {zipcode} | g」$ 1' )。還要嘗試刪除用於測試的'-i'開關,並嘗試用真實文件替換'$ 1'。如果'$ 1'不是一個真正有效的文件,切換'-i'將不起作用(避免相對路徑) –

回答

1

sed小號 ubstitute命令的前半部分是空的:

sed 's//foo/' <<< bar 

它返回此錯誤:

sed: -e expression #1, char 0: no previous regular expression 

因此,as William Pursell commented,還有的${list[@]}陣列的值這是空的,或者$index不在陣列的範圍內。