मेरे पास दो टेक्स्ट फाइलें हैं: 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
.. उपवास के रूप में काफी तेजी से केवल शेल द्वारा किया जाता है ..