나는 큰 텍스트 파일(>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