内容に応じて、ファイルの最初または2行目に行を追加します。

内容に応じて、ファイルの最初または2行目に行を追加します。

多くのファイルの最初の行に1行を追加したいと思います。ただし、ファイルの最初の行がshebangでない場合は、2行目にする必要があります。

答え1

これを行う方法はいくつかあります。

sed '1!b
/^#!/a\
one_line_text
//!i\
one_line_text' infile

行のバックスラッシュ(存在する場合)はエスケープする必要があります(例:\に変更\\)。
空のファイルは編集されません。また、ファイルはその場で編集されません。ドキュメントを確認してファイル編集をサポートしてsedいることを確認し、その-iオプションの構文を確認してください。

答え2

以下のスクリプトでは、最初の行がshebang行の場合は2行目に新しい内容が挿入され、そうでない場合は最初の行に内容が挿入されます。

テストを経てうまく機能しました

#!/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

関連情報