![使用 sed 将变量附加到文件末尾](https://linux22.com/image/1193442/%E4%BD%BF%E7%94%A8%20sed%20%E5%B0%86%E5%8F%98%E9%87%8F%E9%99%84%E5%8A%A0%E5%88%B0%E6%96%87%E4%BB%B6%E6%9C%AB%E5%B0%BE.png)
我在文件的最后一行有日期,如下:
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