파일의 일부(예: 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 file2
p
--file2의 3~5행만 인쇄wq
--w
파일을 다시 디스크에 쓰고q
종료합니다 .