shell标准输出重定向到文件的最后一行,有没有办法把它写到文件的第一行?
由于stdout的内容是不可预测的,我怀疑这可能需要改变stdout的默认行为,但我不确定它是否可行。
示例,将时间戳重定向到文件
echo `date` >> test.txt
Run Code Online (Sandbox Code Playgroud)
默认保存到文件的最后一行
Mon Aug 31 00:40:27 UTC 2020
Mon Aug 31 00:40:28 UTC 2020
Mon Aug 31 00:40:29 UTC 2020
Mon Aug 31 00:40:30 UTC 2020
Run Code Online (Sandbox Code Playgroud)
想要的效果,将输出保存到文件的第一行
Mon Aug 31 00:40:30 UTC 2020
Mon Aug 31 00:40:29 UTC 2020
Mon Aug 31 00:40:28 UTC 2020
Mon Aug 31 00:40:27 UTC 2020
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Joh*_*024 20
要将日期写到开头而不是结尾file,请尝试:
{ date; cat file; } >file.new && mv file.new file
Run Code Online (Sandbox Code Playgroud)
在文件开头添加新文本需要重写整个文件。将新文本添加到文件末尾只需要写入新文本。
安迪·道尔顿( Andy Dalton ) 的建议是像平常一样追加到文件的末尾,然后tac file用来查看文件,这是一个很好的建议。
echo `date` >> test.txt可以用更简单、更高效的方式代替date >> test.txt。
如果使用 bash 4.3 或更高版本,那么正如Charles Duffy指出的那样,printf '%(%c)T\n' -1 >>test.txt效率仍然更高。
花括号周围的空间是必不可少的。这是因为{and}是 shell保留字(与不需要空格的shell关键字相反)。
Siv*_*iva 12
尝试使用sed:
sed -i "1 i\
$(date)" test.txt
Run Code Online (Sandbox Code Playgroud)
形式man:
i \
text 插入文本,每个嵌入的换行符前面都有一个反斜杠。
| 归档时间: |
|
| 查看次数: |
1362 次 |
| 最近记录: |