문제

오히려 큰 파일(150 만 라인의 10chars).필요해요 그것을 분할에서 150 개의 파일을 2 만 명으로,각 출력 라인 또는 5 자이나 마지막 5 자의 소스 라인입니다.내가 할 수 있는 이 Perl 에서 오히 빨리,하지만 내가 궁금하는 경우가 있었는 쉬운 솔루션을 사용하여 bash.어떤 아이디어가?

도움이 되었습니까?

해결책

숙?:-)

내가 생각하는 간단한 파이프 sed(분할하는 각 라인으로 두)과 분리(분할 것을 여러 파일로)충분합니다.

남자는 명령입니다.


추가 확인 후에는지 숙제:

는 방법에 대

sed 's/\(.....\)\(.....\)/\1\n\2/' input_file | split -l 2000000 - out-prefix-

?

다른 팁

내가 생각하는 무언가 다음과 같이 일할 수 있:

out_file=1
out_pairs=0
cat $in_file | while read line; do
    if [ $out_pairs -gt 1000000 ]; then
        out_file=$(($out_file + 1))
        out_pairs=0
    fi
    echo "${line%?????}" >> out${out_file}
    echo "${line#?????}" >> out${out_file}
    out_pairs=$(($out_pairs + 1))
done

가 확실하지 않는 경우에 그것은 간단하거나 보다 더 효율적 사용하여 Perl,하지만.

처음 다섯 개의 문자를 각 라인의 변형,가정형이라는 파일 x.txt 고 가정하고 그것은 확인 파일을 만들어서 현재 디렉터리와 이름 x.txt.* :

분할-l2000000x.txt x.txt.아웃&&(에 대한 splitfile x.txt.아웃*;하 outfile="${splitfile}.firstfive";echo"$splitfile->$outfile";컷-c1-5"$splitfile">"$outfile";완료)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top