我需要使用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不是真的