【问题标题】:Assign a header to multiple files, Linux为多个文件分配一个标题,Linux
【发布时间】:2013-05-15 06:23:38
【问题描述】:

header 文件是通过运行主脚本生成的,并且它的内容在我运行程序时随时更改。我想将头文件的内容分配给其他三个文件作为它们的标题。除标题外,其他三个文件的内容不应更改。例如file1

header content
file1 content

file2

header content
file2 content

它是如何完成的?

注意:请考虑程序运行多次,因此必须覆盖的标头不是很多标头。

【问题讨论】:

    标签: linux sed awk grep cat


    【解决方案1】:

    运行此代码一次以保留没有标题信息的原始文件:

    for file in myfile1 myfile2 myfile3
    do
      cp ${file} ${file}.orig
    done
    

    每次头文件更改时运行此代码

    for file in myfile1 myfile2 myfile3
    do
      cat header ${file}.orig > ${file}
    done
    

    其中 myfile1、myfile2 和 myfile3 是您引用的 3 个原始文件,而 header 是包含不断变化的标头信息的文件。

    【讨论】:

    • 第二次运行程序时,带有头文件的文件被复制到file.orig (cp ${file} ${file}.orig) 然后我有两个头文件。
    • @newzad - 答案包含两个程序。第一个只能运行一次。
    • 对不起,我误会了。
    【解决方案2】:

    如果之前没有保存过,此代码将备份每个 $file,然后将标题加入保存的正文。只需确保第一次运行脚本时文件没有标题即可。

    for file in myfile{1,2,3}
    do
        [ -f $file.body ] || mv $file $file.body
        cat header $file.body >$file
    done
    

    【讨论】:

    • 我只为一个文件做了。它运作良好,每次运行时标题不会累积在文件中。然而,一个文件中总是有 3 个标题。我刚刚使用:[-f file1.body] || mv file1 file1.body cat header file1.body >file1
    • @newzad 正如我所说,在运行脚本之前确保文件开头没有标题。
    【解决方案3】:

    cat 应该这样做

    cat header file1 > file1-t
    mv file1-t file1
    

    【讨论】:

    • 我做了类似的事情,但是当 file1 第二次使用时,它有两个标题。
    【解决方案4】:
     cat headerfile file1 > file1_withHeader
    

    【讨论】:

    • 最好用 cat 代替
    猜你喜欢
    • 2021-09-19
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2017-02-21
    • 1970-01-01
    相关资源
    最近更新 更多