使用 sed 将变量附加到文件末尾

使用 sed 将变量附加到文件末尾

我在文件的最后一行有日期,如下:

20230220

我想添加这样的时间:

2023022000

i小时数被循环不断分配给变量。

如何sed在循环内部使用将该变量附加到文件末尾。

我尝试过:

sed '$a|$i|>end>' file.txt

但无法附加到文件。

答案1

sed你可以这样做:

sed '$a'"$i"'' file.txt

注意:您需要打破'shell 参数/变量周围的单引号,以便将其扩展为其值,否则,它将被视为文字$i

但是,您可能根本不需要sed...由于您已经在使用 shell 循环,因此可以使用 shell 重定向和附加运算符将其附加到循环中,>>如下所示:

echo "$i" >> file.txt

这会将扩展的值放在$i文件最后一行之后的新行上。

sed但是,如果您想将该值放在同一最后一行,紧挨着该行中已有的内容...例如,如果文件末尾已有最后一行,20230220而您想00在它旁边添加,使其成为2023022000,那么您可以使用:

sed '$s/$/'"$i"'/' file.txt

注意:用于sed编辑文件(而不是仅仅打印到终端),您需要-i像这样设置标志:

sed -i '$a'"$i"'' file.txt

相关内容