我有一个带有第3行的文件test.txt
start day = 29,
日期编号29,需要每天更新。最简单的方法是什么?
我试过
line3=" start day = $(date +"%d"),"
sed -i "3c $line3" test.txt
唯一的问题是“开始”之前的第一个空格没有显示出来。结果是
start day = 29
而不是
start day = 29,
答案 0 :(得分:1)
你需要逃离一个初始空间。
sed -i~ "3c\ start day = $(date +%d)," test.txt
应该有用。
(请注意,这与bash关系不大,而且与sed
有关。)
答案 1 :(得分:0)
首先,变量扩展发生在c
命令运行之前,所以你实际上是在运行这样的sed
sed -i "3c start..." test.txt
c
之后某处的反斜杠可能标记替换文本的开头,因此\
之后的任何空格都不会被忽略。在没有反斜杠的情况下,我猜sed
将第一个非空白字符作为替换文本的开头,因此忽略之前的任何空格。
所以sreservoir's answer是一种解决方法。
或者,由于您只是更新日期,因此您只需更换数字(而不是整行),这样您就不必担心复制该行的其他部分。
sed -i "3s/[0-9][0-9]\?/$(date +%d)/" test.txt