我想添加一行作为许多文件的第一行,除非文件的第一行是 shebang,在这种情况下它应该是第二行。
答案1
有很多方法可以做到这一点...例如
sed '1!b
/^#!/a\
one_line_text
//!i\
one_line_text' infile
请注意,行中的反斜杠(如果有)必须转义(例如\
变为\\
)。
这不会编辑空文件。此外,这不会就地编辑文件。请查阅您的sed
手册,了解它是否支持-i
就地编辑文件(并检查该选项的语法)。
答案2
在下面的脚本中,如果第一行是 shebang 行,那么它将在第二行中插入新内容,否则它将在第一行中插入内容
测试并运行良好
#!/bin/bash
if [[ `awk 'NR==1 && $1 == "#!/bin/bash" {print $1}' file` == "#!/bin/bash" ]]
then
sed '2i content' file
else
sed '1i content' l.txt
fi