분할 파일의 라인 Linux/bash
-
09-06-2019 - |
문제
오히려 큰 파일(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";완료)
제휴하지 않습니다 StackOverflow