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
.