আমি মনে করি সবচেয়ে ভাল উপায় awk
এবং gawk
।
awk
awk -F "([.] )|( / )" '/^[0-9]{1,3}[.]/{x="F"$1"("$2").txt";}{print >x;}' I_Ching_Wilhelm_Translation.txt
-F
প্রতিটি লাইনের জন্য ক্ষেত্রগুলির পৃথককারী নির্দিষ্ট করবে। এটি একটি রেইজেক্স, এখানে আমরা একাধিক পৃথককারী ব্যবহার করি: ". "
এবং " / "
। সুতরাং এর মতো একটি লাইন 1. Ch'ien / The Creative
3 টি ক্ষেত্রে বিভক্ত হবে: 1
Ch'ien
এবং The Creative
। পরে আমরা এই ক্ষেত্রগুলির সাথে উল্লেখ করতে পারি $n
। $0
সম্পূর্ণ লাইন হয়।
তারপরে আমরা প্যাকেজটিকে প্যাটার্নের সাথে মেলে ধরতে বলি ^[0-9]{1,3}[.]
যদি সেখানে কোনও মিল থাকে তবে আমরা মান নির্ধারণ করি x
। print
অপারেশনের জন্য ফাইলের নাম হিসাবে মানটি ব্যবহৃত হবে । এই উদাহরণে আমরা ব্যবহার করি "F"$1"("$2").txt"
সুতরাং লাইনটি 1. Ch'ien / The Creative
একটি ফাইলের নাম দেয়F1(Ch'ien).txt
জবুথবু ব্যক্তি
কথায় কথায়, আমরা বন্দী গোষ্ঠীটিতেও অ্যাক্সেস করতে পারি। সুতরাং আমরা কমান্ডটি সহজ করতে পারি:
gawk 'match($0, /^([0-9]{1,3})[.] (.*) \/ (.*)$/, ary){x="F"ary[1]"("ary[2]")";}{print >x;}' I_Ching_Wilhelm_Translation.txt
এখানে আমরা match
দলগুলি ক্যাপচার ব্যবহার করি এবং তাদের পরিবর্তনশীল তালিকায় রাখি ary
। $0
সম্পূর্ণ লাইন হয়। ary[0]
সব কি মিলছে। ary[1...n]
প্রতিটি গ্রুপ হয়।
Perl
আমরা এটি পার্ল দিয়েও করতে পারি:
perl -ne 'if(/^([0-9]{1,3})[.] (.*) \/ (.*)$/) {close F; open F, ">", sprintf("F$1($2).txt");} print F' I_Ching_Wilhelm_Translation.txt
ফলাফল:
> ls F*
F10(Lü).txt F22(Pi).txt F34(Ta Chuang).txt F46(Shêng).txt F58(Tui).txt
F11(T'ai).txt F23(Po).txt F35(Chin).txt F47(K'un).txt F59(Huan).txt
F12(P'i).txt F24(Fu).txt F36(Ming I).txt F48(Ching).txt F5(Hsü).txt
F13(T'ung Jên).txt F25(Wu Wang).txt F37(Chia Jên).txt F49(Ko).txt F60(Chieh).txt
F14(Ta Yu).txt F26(Ta Ch'u).txt F38(K'uei).txt F4(Mêng).txt F61(Chung Fu).txt
F15(Ch'ien).txt F27(I).txt F39(Chien).txt F50(Ting).txt F62(Hsiao Kuo).txt
F16(Yü).txt F28(Ta Kuo).txt F3(Chun).txt F51(Chên).txt F63(Chi Chi).txt
F17(Sui).txt F29(K'an).txt F40(Hsieh).txt F52(Kên).txt F64(Wei Chi).txt
F18(Ku).txt F2(K'un).txt F41(Sun).txt F53(Chien).txt F6(Sung).txt
F19(Lin).txt F30(Li).txt F42(I).txt F54(Kuei Mei).txt F7(Shih).txt
F1(Ch'ien).txt F31(Hsien).txt F43(Kuai).txt F55(Fêng).txt F8(Pi).txt
F20(Kuan).txt F32(Hêng).txt F44(Kou).txt F56(Lü).txt F9(Hsiao Ch'u).txt
F21(Shih Ho).txt F33(TUN).txt F45(Ts'ui).txt F57(Sun).txt
উদাহরণ ফাইলটি কীভাবে পাবেন:
curl http://www2.unipr.it/~deyoung/I_Ching_Wilhelm_Translation.html|html2text -o I_Ching_Wilhelm_Translation.plain
sed 's|^[[:blank:]]*||g' I_Ching_Wilhelm_Translation.plain > I_Ching_Wilhelm_Translation.txt