複数行を新しい行に置き換える

複数行を新しい行に置き換える

この複数行を変更する必要がありますが、新しい行を処理する方法は混乱しています。

私のファイルは次のとおりです

%nproc=1
%chk=pes.chk
#CCSD/6-31G* Opt=ModRedundant MaxDisk=50GB

Title

-1 1
H xxxx xxxx xxxx

これに変えたいです。

%nproc=20 
%chk=pes.chk 
%mem=200GB
#CCSD/6-31G(d) Opt SCF(maxcyc=1000)

Title

-1 1 
H xxxx xxxx xxxx

最初の3行を新しい4行に置き換える簡単な方法はありますか?また、「タイトル」の前の \n も重要です。

ベストアンサー1

GNU sedの使用:

printf '%s\n' '%nproc=20' '%chk=pes.chk' '%mem=200GB' '#CCSD/6-31G(d) Opt SCF(maxcyc=1000)' |
  sed -e '3r/dev/stdin' -e '1,3d' file

または、新しい行が次の名前のファイルにある場合linesfile

sed -e '3rlinesfile' -e '1,3d' file

おすすめ記事