0

我有一个第 3 行的文件 test.txt

start day = 29, 

天数 29 需要每天更新。最简单的方法是什么?

我试过了

line3=" start day =  $(date +"%d"),"

sed -i "3c $line3" test.txt

唯一的问题是“开始”之前的第一个空格没有出现。结果是

start day = 29

而不是

start day = 29,
4

2 回答 2

1

您需要转义初始空间。

sed -i~ "3c\ start day = $(date +%d)," test.txt

应该管用。

(请注意,这与 bash 关系不大,而与您的. 文件有关sed。)

于 2013-05-30T02:50:24.200 回答
0

首先,变量扩展发生在c命令运行之前,所以你实际上是像这样运行 sed

sed -i "3c  start..." test.txt

后面某处的反斜杠c可能标志着替换文本的开始,因此后面的任何空格\不会被忽略。在没有反斜杠的情况下,我想sed将第一个非空白字符作为替换文本的开头,因此之前的任何空格都会被忽略。

所以sreservoir 的答案是解决这个问题的一种方法。

或者,由于您只是更新日期,您可以只替换数字(而不是整行),因此您不必担心复制该行的其他部分。

sed -i "3s/[0-9][0-9]\?/$(date +%d)/" test.txt
于 2013-05-30T04:24:20.703 回答