Bash 在引用后添加一行

Bash 在引用后添加一行,bash,shell,sed,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/

变量是

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

我不知道出了什么问题。

尝试以下方法:

sed "/${espejo}/a\
${usuario} ${grupo}" $DIRECTORIO/usu.txt.`date '+%F'` > $DIRECTORIO/usu.txt
请注意,在第一行上的反斜杠之后,除了新行之外,没有任何其他符号。

请尝试以下操作:

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}
中包含
/
字符。

这可能适合您(GNU-sed):


sed/$espejo/r/dev/stdin”文件它不会将/n作为新行获取,它会在同一行中写入所有内容,但不使用\Try sed和
-e
选项检查编辑。如果第一个选项不起作用,试试第二个选项。最后我得到了它。您必须添加另一个\sed“s:${espejo}:${espejo}\\很高兴知道您的问题已经解决:)如果您满意,请将答案标记为已接受。1)espejo内容不能自由地包含类似
\1^$./
的正则表达式元字符(它应该是正确的正则表达式)2)尝试在最前面的第3行中使用
/
和'a'之间的空格3)对于usuario和grupo varaible使用相同的remarq而不是1)(但在replacment Regex模式中不一定使用相同的规则)
sed "/$espejo/r /dev/stdin" file  <<<" ${usuario}                ${grupo}"