string.txt와 lengths.txt라는 두 개의 텍스트 파일이 있습니다.
String.txt :
abcdefghijklmnopqrstuvwxyz
lengths.txt
5
4
10
7
파일을 받고 싶습니다
>Entry_1
abcde
>Entry_2
fghi
>Entry_3
jklmnopqrs
>Entry_4
tuvwxyz
약 28,000 개의 항목을 작업 중이며 200 ~ 56,000 자 사이에서 다양합니다.
현재 다음을 사용하고 있습니다.
start=1
end=0
i=0
while read read_l
do
let i=i+1
let end=end+read_l
echo -e ">Entry_$i" >>outfile.txt
echo "$(cut -c$start-$end String.txt)" >>outfile.txt
let start=start+read_l
echo $i
done <lengths.txt
그러나 매우 비효율적입니다. 더 좋은 아이디어가 있습니까?
{ while read l<&3; do head -c"$l"; echo; done 3<lengths.txt; } <String.txt
.
str="$(cat string.txt)"; i=0; while read j; do echo "${file:$i:$j}"; i=$((i+j)); done <length.txt
.. 껍질만으로도 충분히 빨리 느껴집니다 ..