ÇĻÎ ţööļš
kgrep, ksed, kcat àñđ kdiff àŕé ƒöŕḿàţ-àŵàŕé ŕéîḿàĝîñîñĝš öƒ ţĥé çļàššîç
Üñîẋ ţéẋţ üţîļîţîéš. grep, sed, cat àñđ diff öþéŕàţé öñ ŕàŵ ƃýţéš: ţĥé
ļîñéš öƒ à ƒîļé àš ţĥé öþéŕàţîñĝ šýšţéḿ šţöŕéš ţĥéḿ. Ţĥéšé ƒöüŕ ŕéàđ, ŕéŵŕîţé
àñđ çöḿþàŕé ţĥé ţéẋţ çöñţéñţ îñšîđé àñý ƒöŕḿàţ kapi üñđéŕšţàñđš,
ŕéĝàŕđļéšš öƒ ĥöŵ ţĥàţ ţéẋţ îš éñçöđéđ öñ đîšķ. Îţ îš ţĥé šàḿé çöñţéñţ éñĝîñé ţĥé
ŕéšţ öƒ kapi ŕüñš öñ, éẋþöšéđ àš ţĥé Üñîẋ ṽéŕƃš ýöü àļŕéàđý ķñöŵ.
Ţĥé þŕàçţîçàļ çöñšéǫüéñçé: ýöü çàñ šéàŕçĥ ţĥé þŕöšé îñšîđé à Ŵöŕđ .docx,
ŕéŵŕîţé à þĥŕàšé àçŕöšš à đîŕéçţöŕý öƒ ĴŠÖÑ çàţàļöĝš, öŕ þŕîñţ ţĥé šéĝḿéñţš öƒ
àñ ẊĻÎƑƑ ƒîļé àš þļàîñ ţéẋţ, üšîñĝ ḿüšçļé ḿéḿöŕý ƒŕöḿ ţööļš ýöü àļŕéàđý ķñöŵ,
ŵîţĥöüţ ƒîŕšţ çöñṽéŕţîñĝ àñýţĥîñĝ.
kdiff éẋţéñđš ţĥé šàḿé îđéà ţö diff: îţ çöḿþàŕéš ţĥé ţéẋţ öƒ ţŵö
ƒîļéš ƃļöçķ ƃý ƃļöçķ, šö à ŕéƒļöŵéđ .docx öŕ à ŕéöŕđéŕéđ ĴŠÖÑ çàţàļöĝ šĥöŵš
öñļý ţĥé þŕöšé ţĥàţ àçţüàļļý çĥàñĝéđ. Ĝîṽéñ à šîñĝļé ƒîļé àñđ à ţàŕĝéţ ļöçàļé,
îţ ŕéþöŕţš ŵĥîçĥ ƃļöçķš àŕé šţîļļ üñţŕàñšļàţéđ.
À ƒîƒţĥ üţîļîţý, kconv, ĥàš ñö çļàššîç Üñîẋ àñàļöĝ: îţ çöñṽéŕţš
ƃéţŵééñ ƒöŕḿàţš (à .docx ţö çļéàñ Ḿàŕķđöŵñ, à ĐöçĻàñĝ đöçüḿéñţ ţö ĤŢḾĻ, öŕ àñý
šüþþöŕţéđ ƒöŕḿàţ ţö ĐöçĻàñĝ), çàŕŕýîñĝ ţĥé đöçüḿéñţ'š šţŕüçţüŕé àçŕöšš ŕàţĥéŕ
ţĥàñ îţš ƃýţéš.
Ţĥé ṽîđéö ƃéļöŵ šĥöŵš ţĥé ŵĥöļé ļööþ öñ à šàļéš ţéàḿ'š çöļļàţéŕàļ: à Ḿàŕķđöŵñ
þîţçĥ, à Ŵöŕđ þŕöþöšàļ, àñđ àñ Éẋçéļ þŕîçé ļîšţ. kcat þŕîñţš ţĥé ţéẋţ îñšîđé
éàçĥ ƒîļé, kgrep ƒîñđš ţĥé þŕöđüçţ ñàḿé àçŕöšš àļļ ţĥŕéé àţ öñçé, àñđ à šîñĝļé
ksed ŕéƃŕàñđš îţ éṽéŕýŵĥéŕé, ŕéŵŕîţîñĝ éàçĥ đöçüḿéñţ ƃàçķ îñţö îţš öŵñ ƒöŕḿàţ.
Éàçĥ ŵöŕķš öñ éṽéŕý öñé öƒ ţĥé 40+ ƒîļé ƒöŕḿàţš neokapi ŕéàđš: Öƒƒîçé đöçüḿéñţš, ḿéššàĝé çàţàļöĝš àñđ đàţà ƒöŕḿàţš, ḿàŕķüþ, àñđ ḿöŕé. Šéé ţĥé Ƒöŕḿàţ Ŕéƒéŕéñçé ƒöŕ ţĥé ƒüļļ ļîšţ.
Ŵĥý ƃļöçķš, ñöţ ļîñéš
À .docx ĥàš ñö "ļîñéš" îñ ţĥé ƃýţé šéñšé; à ĴŠÖÑ çàţàļöĝ'š ḿéàñîñĝƒüļ üñîţš
àŕé ķéýéđ šţŕîñĝš, ñöţ ƒîļé ŕöŵš. kapi þàŕšéš à đöçüḿéñţ îñţö ƃļöçķš öƒ
çöñţéñţ àñđ šţŕîþš ţĥé šüŕŕöüñđîñĝ ḿàŕķüþ àñđ šţŕüçţüŕé. Ţĥé
ţööļƃöẋ öþéŕàţéš öñ ţĥöšé ƃļöçķš:
kcatþŕîñţš öñé ƃļöçķ þéŕ öüţþüţ ļîñé.kgrepŕéþöŕţš öñé ḿàţçĥîñĝ ƃļöçķ þéŕ ļîñé, àñđ-nþŕéƒîẋéš ţĥé ƃļöçķ'š öŕđîñàļ þöšîţîöñ. Ƒöŕ ĝéñüîñéļý ļîñé-öŕîéñţéđ ƒöŕḿàţš šüçĥ àš þļàîñ ţéẋţ, öñé ƃļöçķ îš öñé ļîñé, šö-nŕéàđš éẋàçţļý ļîķégrep -n.ksedŕéŵŕîţéš à ƃļöçķ'š ţéẋţ àñđ àšķš ţĥé ƒöŕḿàţ ŵŕîţéŕ ţö ŕéçöñšţŕüçţ ţĥé đöçüḿéñţ, šö šţŕüçţüŕé îš þŕéšéŕṽéđ.kdiffàļîĝñš ţĥé ƃļöçķš öƒ ţŵö ƒîļéš (ƃý ķéý ƒöŕ çàţàļöĝš, ƃý çöñţéñţ ƒöŕ þŕöšé) àñđ ŕéþöŕţš àđđéđ, ŕéḿöṽéđ, çĥàñĝéđ àñđ ḿöṽéđ ƃļöçķš ŕàţĥéŕ ţĥàñ çĥàñĝéđ ƃýţéš.kconvĥàñđš ţĥé ƃļöçķš, àñđ ţĥé ŕöļé éàçĥ öñé çàŕŕîéš (ĥéàđîñĝ, ļîšţ îţéḿ, ţàƃļé çéļļ), ţö à đéŕéñţ ƒöŕḿàţ'š ŵŕîţéŕ, þŕöĵéçţîñĝ ţĥé đöçüḿéñţ'š šţŕüçţüŕé îñţö ţĥé ţàŕĝéţ ƒöŕḿàţ.
Îñšţàļļàţîöñ
Ţĥé Kapi ÇĻÎ ƃüñđļéš ţĥéšé çöḿḿàñđš:
brew install neokapi/tap/kapi-cli # macOS/Linux
Šéé Îñšţàļļàţîöñ ƒöŕ ţĥé ŕéļéàšé çĥàññéļš.
Öñ Ŵîñđöŵš, winget install Neokapi.KapiCli îñšţàļļš kapi 1.0.2, ŵĥîçĥ þŕéđàţéš
ţĥé ƃéĥàṽîöüŕ ţĥîš þàĝé đéšçŕîƃéš. Ţàķé à Ŵîñđöŵš ƃüîļđ ƒŕöḿ ţĥé
đîŕéçţ đöŵñļöàđš îñšţéàđ.
Éṽéŕý üţîļîţý îš àļšö ŕéàçĥàƃļé àš à kapi šüƃçöḿḿàñđ üñđéŕ ţĥé šàḿé ñàḿé:
kapi kgrep, kapi ksed, kapi kcat, kapi kdiff, kapi kconv. Éàçĥ ƃéĥàṽéš
îđéñţîçàļļý ţö ţĥé šţàñđàļöñé šĥöŕţ ñàḿé öñ éṽéŕý þļàţƒöŕḿ. (Ţĥé
þŕöẋîéš çàŕŕý ţĥé ķ-ñàḿéš šö éṽéŕý ƃàŕé ṽéŕƃ šţàýš ƒŕéé: ƃàŕé kapi diff îš
ţĥé çöññéçţéđ-þŕöĵéçţ šýñç đ, ñöţ à ƒîļé đ.)
:::ñöţé Ŵîñđöŵš
Ţĥé Ĥöḿéƃŕéŵ îñšţàļļ àđđš ţĥé šĥöŕţ ñàḿéš (kgrep, ksed, kcat, kdiff,
kconv) àš àļîàšéš öƒ ţĥé kapi ƃîñàŕý. Ţĥé Ŵîñđöŵš žîþ çàŕŕîéš ţĥé šîñĝļé
kapi çöḿḿàñđ, šö öñ Ŵîñđöŵš üšé ţĥé šüƃçöḿḿàñđ ƒöŕḿ (kapi kgrep,
kapi ksed, kapi kcat, kapi kdiff, kapi kconv), ŵĥîçĥ îš éẋàçţļý
éǫüîṽàļéñţ.
:::
Çöñṽéñţîöñš šĥàŕéđ àçŕöšš ţĥé ţööļƃöẋ
- Šţàñđàŕđ îñþüţ. Ŵîţĥ ñö ƒîļé àŕĝüḿéñţ, öŕ ŵĥéñ ţĥé ƒîļé îš
-, îñþüţ îš ŕéàđ ƒŕöḿ šţàñđàŕđ îñþüţ. Ŵîţĥöüţ à ƒîļé éẋţéñšîöñ ţö ĝö ƃý, ţĥé ƒöŕḿàţ îš šñéđ ƒŕöḿ ţĥé çöñţéñţ àñđ ƒàļļš ƃàçķ ţö þļàîñ ţéẋţ. - Ƒöŕḿàţ šéļéçţîöñ.
-f, --formatöṽéŕŕîđéš ƒöŕḿàţ đéţéçţîöñ (ƒöŕ éẋàḿþļé-f json). Ñöţé ţĥîš đéŕš ƒŕöḿgrep/sed, ŵĥéŕé-fŕéàđš þàţţéŕñš öŕ šçŕîþţš ƒŕöḿ à ƒîļé; îñ ţĥé ţööļƃöẋ-fàļŵàýš ḿéàñš ƒöŕḿàţ, ḿàţçĥîñĝ ţĥé ŕéšţ öƒ ţĥé kapi ÇĻÎ. Üšé-eƒöŕ éẋþļîçîţ þàţţéŕñš àñđ šçŕîþţš. - Šöüŕçé ṽš. ţŕàñšļàţîöñ. Ƒöŕ ḿüļţîļîñĝüàļ ƒöŕḿàţš ţĥé üţîļîţîéš ƃý đéƒàüļţ
öþéŕàţé öñ ţĥé šöüŕçé ţéẋţ.
--target LOCALEöþéŕàţéš öñ à ţàŕĝéţ ļàñĝüàĝé îñšţéàđ. Ƒöŕ éẋàḿþļé,kgrep --target fr "déconnexion" messages.xliffšéàŕçĥéš ţĥé Ƒŕéñçĥ ţŕàñšļàţîöñš. - Ƒîļéš àñđ đîŕéçţöŕîéš. Ĝļöƃ þàţţéŕñš éẋþàñđ îñ-þŕöçéšš, šö à ǫüöţéđ
'src/**/*.md'ƃéĥàṽéš ţĥé šàḿé îñ éṽéŕý šĥéļļ. À đîŕéçţöŕý àŕĝüḿéñţ ñééđš-r, --recursive; ŵîţĥöüţ îţ, îţ îš ŕéþöŕţéđ àñđ šķîþþéđ, àš îñgrep. Ţĥé öñé éẋçéþţîöñ îšksed, ŵĥîçĥ šþéļļš îţ-R: šéđ'š öŵñ-rḿéàñš--regexp-extended, šö ţĥé ļéţţéŕ îš ļéƒţ àļöñé. - Ƃîñàŕý îñþüţ îš ŕéƒüšéđ. À ƒîļé ţĥàţ ñö ƒöŕḿàţ çļàîḿš àñđ ŵĥöšé ƃýţéš àŕé
ƃîñàŕý (à
.dmg, àñ îñšţàļļéŕ, àñ îḿàĝé ŵîţĥ ñö ŕéàđéŕ) îš ŕéþöŕţéđ àñđ šķîþþéđ ŕàţĥéŕ ţĥàñ ŕéàđ àš þļàîñ ţéẋţ, šö à ĝļöƃ öṽéŕ à đöŵñļöàđš ƒöļđéŕ çàññöţ šþŕàý ŕàŵ ƃýţéš àţ ţĥé ţéŕḿîñàļ öŕ îñţö à çöñṽéŕţéđ ƒîļé. Öţĥéŕ ƒîļéš îñ ţĥé šàḿé ŕüñ àŕé üñàƒƒéçţéđ, àñđ ţĥé éẋîţ šţàţüš îš 2.-f FORMATöṽéŕŕîđéš ţĥé ĝüàŕđ ŵĥéñ ýöü ḿéàñ îţ.