Bash:在初始注释后将行插入源代码文件

Ada*_*ock 2 bash shell

我需要使用bash将一行插入到python文件中.此行需要在文件中的任何初始注释后出现.

所以给定文件:

#!/usr/bin/python
# This is just 
# an example comment

moo = "cow"
... etc ...
Run Code Online (Sandbox Code Playgroud)

我需要一个bash命令来插入一个这样的新行:

#!/usr/bin/python
# This is just 
# an example comment
NEW LINE GOES HERE

moo = "cow"
... etc ...
Run Code Online (Sandbox Code Playgroud)

我完全不知道如何做到这一点.我已经尝试逐行循环遍历文件,但这最终变得非常可怕并严重搞乱了文件的空白.

任何建议都会很棒!

亚当

PS.是的,这有点奇怪,它是一个持续集成构建脚本的一部分.


编辑

为了记录,我尝试的代码是:

insert_setup_code() {
    installed=false
    tmpfile="/tmp/$RANDOM"

    cat "$INSTALL_TO" | while read -d \n l; do
        echo "$l" >> $tmpfile
        if [[ ! $installed && ! `echo "$l" | grep "^#"` ]]; then
            echo "LINE OF CODE HERE" >> $tmpfile
            installed=true
        fi
    done
}
Run Code Online (Sandbox Code Playgroud)

gle*_*man 11

我会写:

line="NEW STUFF HERE"
awk -v text="$line" '!/^#/ && !p {print text; p=1} 1' file
Run Code Online (Sandbox Code Playgroud)

第一个非注释行将触发块打印该行:

  • !/^#/ - 行不以哈希开头
  • !p - 变量p不是真的