2014-10-08 39 views
0

的變量是添加一行發生後

espejo=u456789 
usuario=u123456 
grupo=unixgr 

我想變$espejo,在變量文本$usuario$grupo線發生後補充:

cp $DIRECTORY/usu.txt $DIRECTORY/usu.txt.`date '+%F'` 
sed "/${espejo}/a\ ${usuario}    ${grupo}" $DIRECTORY/usu.txt.`date '+%F'` > $DIRECTORY/usu.txt 

我得到這個錯誤執行期間:

sed:0602-404功能/ u456789/a \ u123456 u nixgr無法解析。

我不知道什麼是錯的。

回答

0

試試這個:

sed "s:${espejo}:${espejo}\n${usuario}    ${grupo}:" $DIRECTORIO/usu.txt.`date '+%F'` > $DIRECTORIO/usu.txt 

如果上面的只是增加n,而不是換行,試試這個:

sed "s:${espejo}:${espejo}\ 
${usuario}    ${grupo}:" $DIRECTORIO/usu.txt.`date '+%F'` > $DIRECTORIO/usu.txt 

這將追加新線新的變量。我猜你正面臨這個問題,因爲${espejo}包含/字符。

+0

它不會得到/ n作爲新行,它將全部寫入同一行,但不包含\ – Willybaste 2014-10-08 09:46:30

+0

使用'-e'選項嘗試sed – Fazlin 2014-10-08 09:58:48

+0

檢查編輯。如果第一個選項不起作用,請嘗試第二個選項。 – Fazlin 2014-10-08 10:14:42

1

嘗試以下操作:

sed "/${espejo}/a\ 
${usuario} ${grupo}" $DIRECTORIO/usu.txt.`date '+%F'` > $DIRECTORIO/usu.txt 

注意,在第一行中的反斜槓後也沒有什麼,除了新行的任何其他符號。

+0

帶出了同樣的錯誤 – Willybaste 2014-10-08 09:47:25

+0

1)埃斯佩霍內容不能有正則表達式元字符,比如'\ 1^$ /'自由(它應該是一個正確的正則表達式)2)嘗試在火線上使用'/'和'a \'之間的空格3)對於usuario和grupo變量(但在替換正則表達式中不是相同的規則) – NeronLeVelu 2014-10-08 10:00:48

0

這可能會爲你工作(GNU SED):

sed "/$espejo/r /dev/stdin" file <<<" ${usuario}    ${grupo}"