将函数输出附加到创建文件的顶部

时间:2013-06-14 19:19:03

标签: bash

我有一个在linux中运行的脚本,它只是输出到文件中的多个函数调用。我有一个功能,它是重要信息的概述我想要附加到文件的顶部以便于查看。

问题是我不能简单地首先调用这个概述函数,因为它依赖于以前的函数。

在没有创建临时文件的情况下,有更简单的方法吗?这是一个相当大的文件,需要很长时间。

3 个答案:

答案 0 :(得分:0)

如果您使用的是类似Perl脚本的内容,则应该可以先在顶部留出一些空间用于概述,然后写下您的所有数据。

在此之后,使用write / append(w +)访问重新打开文件,使用seek()或sysseek()函数将文件句柄位置移动到文件的早期位置,然后将概述数据写入其中。 / p>

可以在此处获取有关Perl函数的帮助:http://perldoc.perl.org/perlfunc.html

答案 1 :(得分:0)

首先,也许你的意思是前置,而不是附加。

在linux中,假设你想要: file1 - > BottomContent file2 - > TopContent

您可以使用:

$ cat file2 file1 > finalfile; rm file[12]

答案 2 :(得分:0)

@SandeepY有一个合理的解决方案。

每次在Unix中修改文件时,你都在使用打开原始文件和新文件的系统,因此(几乎总是)会涉及一个临时文件,无论你是否可以看到它。

话虽这么说,另一个解决方案,就像你指定一个函数提供一些输出一样,是使用一个进程组将你的输出“​​编组”到一个流中,并将其重定向到你的文件中。

 mv mainFile mainFile.tmp
 {
   myFunc 
   cat mainFile.tmp
 } > mainFile && /bin/rm mainFile.tmp

由于您似乎经常需要这个,所以应该很容易将其转换为函数,将mainFile替换为"$1"

IHTH