多くのファイルの最初の行に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