发生后添加一行

时间:2014-10-08 08:53:47

标签: bash shell sed

变量是

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 unixgr无法解析。

我不知道出了什么问题。

3 个答案:

答案 0 :(得分:1)

尝试以下方法:

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

请注意,在第一行反斜杠后,除了新行之外没有任何其他符号。

答案 1 :(得分: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}中包含/字符。

答案 2 :(得分:0)

这可能适合你(GNU sed):

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