큰 텍스트 파일에서 시작선을 제거하는 빠른 방법

큰 텍스트 파일에서 시작선을 제거하는 빠른 방법

나는 큰 텍스트 파일(>500GB)을 가지고 있고 내가 찾을 수 있는 모든 방법(sed/tail 등)을 사용하려면 디스크에 500GB의 콘텐츠를 써야 합니다. 디스크에 500GB를 쓰지 않고 처음 몇 행을 빠르게 삭제할 수 있는 방법이 있습니까?

답변1

sed다음 옵션을 사용하여 행을 삭제할 수 있습니다 -i.

$ cat foo.txt
bar
baz
lorem
$ sed -i '1d' foo.txt
$ cat foo.txt
baz
lorem

행 범위를 삭제할 수도 있습니다. 예를 들어 sed -i '1,4d' foo.txt행 1-4가 삭제됩니다.

편집: Don이 주석에서 지적했듯이 이 -i옵션은 여전히 ​​복사본을 생성합니다.

답변2

이런 방식으로 tail 명령을 사용하면 다음과 같습니다.

# tail -n +<lines to skip> filename

예를 들어:

tail -n +1000 hugefile.txt > hugefile-wo-the-first-1000-lines.txt

그게 다야. - 자세한 내용은:https://es.wikipedia.org/wiki/Tail

그런데 누군가가 이것이 당신이 원하는 것과 정반대라고 말한다면 속지 마세요. 저는 그것을 테스트했습니다:

$ tail -n +3 /tmp/test 
3
4
5

$ cat /tmp/test 
1
2
3
4
5

관련 정보