이 여러 줄을 변경해야 하는데 새 줄을 처리하는 방법이 혼란스럽습니다.
내 파일은 다음과 같습니다
%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
이는 내부 편집 명령에 비해 더 큰 상황에서도 잘 작동합니다.