한 파일의 줄을 다른 파일의 줄로 바꾸기

한 파일의 줄을 다른 파일의 줄로 바꾸기

파일의 일부(예: m에서 n까지의 줄)를 다른 파일의 줄로 바꾸는 방법이 궁금합니다. 좋은 방법으로 수행하세요.

하지만 이 부분은 더 큰 것의 작은 부분이 될 것이기 때문에 에디터를 사용하고 싶지 않습니다.

답변1

file1의 3~5행을 file2의 3~5행으로 바꾸려면 다음을 수행합니다.

ed -s file1 <<< $'3,5d\n2r !sed -n 3,5p file2\nwq'

유연성을 높이려면 다음을 수행하세요.

start=3 end=5
printf '%d,%dd\n%dr !sed -n %d,%dp file2\nwq\n' $start $end $((start - 1)) $start $end | \
  ed -s file1

두 방법 모두 동일한 목표를 달성합니다. 즉, file2의 행을 사용하여 file1을 스크립트로 편집합니다.

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

  • 3,5d-- 3~5행 삭제
  • 2r !sed...-- sed 명령의 출력을 가져와서 줄에 추가합니다.2
  • sed -n 3,5p file2p--file2의 3~5행만 인쇄
  • wq-- w파일을 다시 디스크에 쓰고 q종료합니다 .

관련 정보