我有一个在 linux 中运行的脚本,它只是将多个函数调用输出到一个文件中。我有一个功能是重要信息的概述,我想将其附加到文件的顶部以便于查看。
问题是我不能简单地首先调用这个概述函数,因为它依赖于以前的函数。
有没有更简单的方法可以在不创建临时文件的情况下做到这一点?这是一个相当大的文件,需要很长时间。
我有一个在 linux 中运行的脚本,它只是将多个函数调用输出到一个文件中。我有一个功能是重要信息的概述,我想将其附加到文件的顶部以便于查看。
问题是我不能简单地首先调用这个概述函数,因为它依赖于以前的函数。
有没有更简单的方法可以在不创建临时文件的情况下做到这一点?这是一个相当大的文件,需要很长时间。
如果您使用的是 Perl 脚本之类的东西,应该可以先在顶部留一些空间用于概述,然后写入所有数据。
在此之后,使用写入/追加 (w+) 访问重新打开文件,使用 seek() 或 sysseek() 函数将文件句柄位置移动到文件早期的所需位置,然后将概览数据写入其中。
可以在此处获得有关 Perl 函数的帮助:http: //perldoc.perl.org/perlfunc.html
@SandeepY 有一个合理的解决方案。
每当您在 Unix 中修改文件时,您使用的系统会打开原始文件和新文件,因此(几乎总是)涉及到一个临时文件,无论您是否可以看到它。
话虽如此,另一种解决方案,正如您指定的函数提供一些输出,是使用进程组将您的输出“编组”到一个流中,并将其重定向到您的文件中。
mv mainFile mainFile.tmp
{
myFunc
cat mainFile.tmp
} > mainFile && /bin/rm mainFile.tmp
由于您似乎经常需要它,所以应该很容易将它变成一个函数,将 mainFile 替换为"$1"
.
IHTH
首先,也许您的意思是前置,而不是附加。
在 linux 中,假设你想要:file1 -> BottomContent file2 -> TopContent
你可以使用:
$ cat file2 file1 > finalfile; rm file[12]