ed: 첫 번째 줄을 기본 현재 줄로 설정

ed: 첫 번째 줄을 기본 현재 줄로 설정

대용량 파일의 첫 번째 줄을 편집 하려고 하는데 모든 줄을 읽을 때 ed까지 기다려야 합니다 . 전체 파일 읽기를 ed중지하고 현재 줄이 첫 번째 줄이 되도록 즉시 편집을 시작할 수 있는 방법이 있습니까 ?ed

답변1

Shellter가 지적했듯이 ed이것은 수행될 수 없습니다. 대부분의 편집 작업에서는 파일을 다시 작성해야 하며 해당 위치에서만 바꿀 수 있습니다. 이 경우 를 사용할 수 있습니다 hexedit(1).

메모리를 가장 적게 사용하는 방법은 sed교체와 같은 작업을 사용하는 것입니다.팔월그리고6월첫번째 줄:

sed '1s/August/June/' FILE > NEWFILE

답변2

ed편집기로 문서를 연 후에는 전체 파일 읽기를 중지하거나 편집 버퍼의 첫 번째 줄을 현재 줄로 자동 설정할 방법이 없습니다.

편집기는 ed항상 명령의 영향을 받는 마지막 줄(또는 명령이 이면 바로 뒤 또는 앞)에 사용자를 배치하며 시작 시 파일을 읽는 것은 현재 편집 버퍼를 버리고 지정된 파일을 여는 를 d사용하는 것과 유사합니다. e filename현재 줄을 파일에서 읽은 마지막 줄로 설정합니다.

큰 문서를 비대화형으로 변경하고 싶다면 이러한 도구가 스트림에서 작동하고 기본적으로 전체 문서를 메모리로 읽지 않으므로 더 나은 대안을 사용 sed하거나 제공할 수도 있습니다.awk

대용량 문서 를 대화형으로 편집하고 싶다면 함께 사용하여 문서를 여러 덩어리로 분할해 보는 것이 split좋습니다 .edvicat


대용량 파일의 처음 5줄 편집을 위한 가상 편집 세션 ed:

$편집하다
음! head -n 5개의 대용량 파일
123
그램/^/m0
우와! { cat - ; tail -n +6 대용량 파일 } >hugefile.new;
묻다

즉, 편집된 출력을 요청합니다 head -n 5 hugefile. 여기서 수행하는 편집은 단순히 행을 뒤집는 것입니다( g/^/m0"첫 번째 행 앞으로 각 행을 차례로 이동"). 그런 다음 수정된 편집 버퍼는 쉘 명령에 기록되어 버퍼의 내용을 원본 파일의 6행 및 그 이후 내용과 연결합니다. 결과는 새 파일 이름에 기록됩니다. Q그런 다음 편집기를 종료하십시오.

관련 정보