대용량 파일의 열 헤더 이름을 바꾸려고 하는데 가장 효율적인 방법을 알고 싶습니다. 파일 길이는 10M~50M 라인이고, 각 라인은 약 100자 정도이며, 총 10개의 컬럼이 있습니다.
누군가 비슷한 질문을 하여 첫 번째 줄을 삭제했는데 가장 좋은 대답은 "꼬리"와 관련이 있었습니다.sed를 사용하여 대용량 파일 헤더를 효율적으로 제거하시겠습니까?
내 추측은 다음과 같습니다
bash-4.2$ seq -w 100000000 1 125000000 > bigfile.txt
bash-4.2$ tail -n +2 bigfile.txt > bigfile.tail && sed '1 s/^/This is my first line\n/' bigfile.tail > bigfile.new && mv -f bigfile.new bigfile.txt;
더 빠른 방법이 있나요?
답변1
- 새 헤더를 새 파일로 출력합니다
printf "This is my first line\n > bigfile.new
. - 나머지를 제공하려면 추가 리디렉션을 사용하십시오
tail
.bigfile
>>
참고: tail +2
"GNUism" - 대부분의 Linux 배포판에서 작동하지만 POSIX와 호환되지 않으며 다른 Unices에서는 작동하지 않을 수 있습니다.
답변2
Linux를 가정하면 bash
질문의 코드보다 빠를 수 있습니다.
(echo "New headers";tail +2 bigfile.txt) > newbigfile.txt && mv newbigfile.txt bigfile.txt