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