여러 줄을 새 줄로 바꾸기

여러 줄을 새 줄로 바꾸기

이 여러 줄을 변경해야 하는데 새 줄을 처리하는 방법이 혼란스럽습니다.

내 파일은 다음과 같습니다

%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

답변2

file1파일을 수정하고(처음 3줄을 4줄 블록으로 대체) 파일에 4줄의 새 줄을 복사했다고 가정 file2하면 다음과 같이 합니다.

tail -n +4 file1 >> file2 && mv file2 file1

file1이는 내부 편집 명령에 비해 더 큰 상황에서도 잘 작동합니다.

관련 정보