파일 2의 특정 줄을 파일 1의 내용으로 덮어씁니다.

파일 2의 특정 줄을 파일 1의 내용으로 덮어씁니다.

2개의 파일이 있습니다(파일 1에는 한 줄만 포함되어 있고 파일 2에는 여러 줄이 포함되어 있습니다). 파일 2의 라인 5를 파일 1의 유일한 라인으로 바꾸고 싶습니다. 가장 좋은 접근 방식은 무엇입니까?

답변1

printf두 가지를 결합하면 ed파일 스크립트 편집을 위한 훌륭한 도구가 됩니다.

printf '%s\n' '5r file1' 5d w | ed file2

ed이는 편집 에 사용됩니다 file2. 명령은 printf각 명령 사이에 개행 또는 개행 문자( )를 사용하여 각 인수를 한 번에 하나씩 파이프합니다.ed\n

명령은 다음 ed과 같습니다:

  • 5r file1 - 내용 삽입file1 뒤쪽에5호선
  • 5d - 5번째 줄 삭제
  • w - 변경 사항을 file2디스크에 다시 씁니다. 이것이 없으면 종료 시 변경 사항이 삭제됩니다 ed(즉, 저장하지 않고 종료).

답변2

vim /path/to/file1 -c '5' -c 'delete 1' -c '4' -c 'read /path/to/file2' -c 'w /path/to/file3' -c 'q!'

그러면 가 vim열리고 file1다섯 번째 줄로 이동하여 삭제하고 file2해당 줄이 있던 곳에 내용을 삽입하고 결과를 새 파일에 저장합니다 file3.

관련 정보