使用 sed 命令将变量写入特定行

使用 sed 命令将变量写入特定行
echo -n "##### STATIONS? #######"
read station
text="stab_site "

我需要将 echo 写入$text$station文本文件的第 27 行。我使用了下面的命令,但它不起作用,

sed -i "27i\$text$station" text.data

它产生;$textankr ista“text”变量不能在 sed 函数内传递。

答案1

这是因为您的 shell 正在将其解释\$为字面(转义)美元符号。尝试

sed -i "27i\\$text$station" text.data

或混合使用单引号和双引号

sed -i '27i\'"$text$station" text.data

或者用字面换行符

sed -i "27i\
$text$station" text.data

(我认为这是更 POSIX 正确的)。

答案2

也许问题可能是一个空的输出文件。示例:#!/bin/bash

CAMINHO='/etc/scripts/dropbox.log'

RESULTADO=`date +%d/%m/%Y | tr '\n' ' '; dropbox status;`

sed -i "1i\
$RESULTADO" /etc/scripts/dropbox.log

此脚本无法写入空文件 dropbox.log。

在文件中写入一些文本并再次执行脚本。

相关内容