根据内容添加一行作为文件的第一行或第二行

根据内容添加一行作为文件的第一行或第二行

我想添加一行作为许多文件的第一行,除非文件的第一行是 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

相关内容