এই পাইপলাইনটি একটি উল্লেখযোগ্য ফ্যাক্টরের দ্রুততম উত্তরগুলির তুলনায় দ্রুত (ফলাফল দেখুন)। এটি ব্যবহার করে tr
এবং tac
। এটিতে আপনার 2 এএসসিআইআই বাইট (\ x00- \ x7F) ব্যবহার করা দরকার যা আপনার ডেটাতে নেই।
\x00
সাধারণত যেমন হয় তেমন ভাল পছন্দ, \x01
তবে আপনি কোনও ASCII বাইট ব্যবহার করতে পারেন যা ডেটাতে নেই।
এই উদাহরণস্বরূপ, সীমাবদ্ধ করা অক্ষর হিসাবে স্পেস এবং ট্যাব। ডিলিমিটারগুলি মাল্টি-বাইট বা একক হতে পারে। আউটপুট ডিলিমিটার একটি একক স্থান।
কমান্ডটি এখানে। ফাইলের numberof fields
নামটি _ x প্রদর্শন করেnumber of lines
<"$file" tr ' \t\n' '\0\0\1' |tr -s '\0' '\n' |tac |tr '\n' ' ' |tr '\1' '\n'
আপনি যদি অব্যবহৃত বাইটগুলি পরীক্ষা করতে চান / চান তবে এই optionচ্ছিক awk
স্ক্রিপ্টটি দিয়ে আপনি আগেই চেক করতে পারেন । সামগ্রিক সময়, এমনকি এই alচ্ছিক স্ক্রিপ্টটি চলাকালীন, এখনও অন্য মেটোডের তুলনায় এখনও দ্রুতগতিতে রয়েছে (এখনও অবধি :) .. এখানে প্রাক-প্রক্রিয়াজাতকরণ স্ক্রিপ্ট রয়েছে।
o=($(<"$file" char-ascii-not-in-stream)); x="${o[0]}"; y="${o[1]}"
<"$file" tr ' \t\n' "$x$x$y" |tr -s "$x" '\n' |tac |tr '\n' ' ' | tr '$y' '\n' >"$file".$user
এটি অ্যাজ্ক স্ক্রিপ্ট: char-ascii-not-in-stream
#!/usr/bin/awk -f
{c[$0]} END{for(i=0;i<=127;i++) {if(sprintf("%c", i) in c);else {printf "\\%03o ",i}}}
এই স্ক্রিপ্টের জন্য দ্বিতীয় সেটগুলি char-ascii-not-in-stream
এর সময় অন্তর্ভুক্ত করে ।
Peter.O {tr,tac,tr} ==== file_10_x10000
real 0m0.013s 0m0.015s
user 0m0.020s 0m0.020s
sys 0m0.008s 0m0.012s
user11136 {python} ===== file_10_x10000
real 0m0.057s
user 0m0.048s
sys 0m0.008s
jmp {python} =========== file_10_x10000
real 0m0.160s
user 0m0.160s
sys 0m0.000s
rush {awk} ============= file_10_x10000
real 0m0.121s
user 0m0.120s
sys 0m0.000s
##############################################
Peter.O {tr,tac,tr} ==== file_1000_x1000
real 0m0.048s 0m0.059s
user 0m0.040s 0m0.040s
sys 0m0.040s 0m0.048s
user11136 {python} ===== file_1000_x1000
real 0m0.158s
user 0m0.136s
sys 0m0.028s
jmp {python} =========== file_1000_x1000
real 0m0.327s
user 0m0.320s
sys 0m0.008s
rush {awk} ============= file_1000_x1000
real 0m0.832s
user 0m0.820s
sys 0m0s012s
##############################################
Peter.O {tr,tac,tr} ==== file_1000000_x50
real 0m5.221s 0m6.458s
user 0m4.208s 0m5.248s
sys 0m2.624s 0m2.396s
user11136 {python} ===== file_1000000_x50
real 0m16.286s
user 0m10.041s
sys 0m5.148s
jmp {python} =========== file_1000000_x50
real 0m22.845s
user 0m20.705s
sys 0m1.140s
rush {awk} ============= file_1000000_x50
real 0m44.793s
user 0m43.583s
sys 0m0.848s
##############################################
perl -lane 'print join " ", reverse @F'