ķšéđ
Àþþļý sed-šţýļé šüƃšţîţüţîöñš ţö ţĥé ĥüḿàñ-ŕéàđàƃļé ţéẋţ îñšîđé àñý šüþþöŕţéđ
ƒöŕḿàţ, ţĥéñ ŵŕîţé ţĥé đöçüḿéñţ ƃàçķ îñ ţĥé šàḿé ƒöŕḿàţ. Öñļý ţĥé éđîţàƃļé ţéẋţ
çĥàñĝéš: à .docx ķééþš îţš šţýļéš, à ĴŠÖÑ çàţàļöĝ ķééþš îţš ķéýš àñđ šĥàþé.
ksed [flags] SCRIPT [FILE...]
SCRIPT îš à šüƃšţîţüţîöñ çöḿḿàñđ, s/regexp/replacement/flags:
- Àñý šîñĝļé-ƃýţé đéļîḿîţéŕ ŵöŕķš, šö
s|a|b|îš éǫüîṽàļéñţ ţös/a/b/, ŵĥîçĥ ĥéļþš ŵĥéñ ţĥé ţéẋţ çöñţàîñš šļàšĥéš. - Ţĥé
gƒļàĝ ŕéþļàçéš éṽéŕý ḿàţçĥ îñ à ƃļöçķ (öţĥéŕŵîšé öñļý ţĥé ƒîŕšţ); ţĥéiƒļàĝ ḿàķéš ţĥé ḿàţçĥ çàšé-îñšéñšîţîṽé. - Ŕéþļàçéḿéñţš šüþþöŕţ ƃàçķŕéƒéŕéñçéš
\1…\9àñđ&ƒöŕ ţĥé ŵĥöļé ḿàţçĥ. - Þàšš šéṽéŕàļ šüƃšţîţüţîöñš ŵîţĥ ŕéþéàţéđ
-e.
Ƃý đéƒàüļţ ţĥé éđîţéđ đöçüḿéñţ îš ŵŕîţţéñ ţö šţàñđàŕđ öüţþüţ, ļîķé sed. Üšé
-i ţö éđîţ ƒîļéš îñ þļàçé, öþţîöñàļļý ķééþîñĝ à ƃàçķüþ (-i.bak). Ŵîţĥ ñö
ƒîļé, öŕ ŵĥéñ ţĥé ƒîļé îš -, šţàñđàŕđ îñþüţ îš ŕéàđ.
Éđîţîñĝ à ƃîñàŕý đöçüḿéñţ þŕöđüçéš à ƃîñàŕý đöçüḿéñţ: à .docx ĝöéš ƃàçķ öüţ àš
à žîþ. Ŵĥéñ šţàñđàŕđ öüţþüţ îš à ţéŕḿîñàļ, ţĥàţ îš ŕéƒüšéđ ŕàţĥéŕ ţĥàñ šţŕéàḿéđ
àţ îţ. Üšé -i, ŕéđîŕéçţ šţđöüţ ţö à ƒîļé, öŕ þàšš --force ţö àšķ ƒöŕ ţĥé
ƃýţéš àñýŵàý. Ŕéđîŕéçţéđ àñđ þîþéđ öüţþüţ îš ñéṽéŕ îñšþéçţéđ, šö ksed … > out.docx àñđ ksed … | kcat - ƃéĥàṽé éẋàçţļý àš ţĥéý àļŵàýš đîđ. Îţ îš ţĥé
šàḿé çöñṽéñţîöñ gzip àñđ xz ƒöļļöŵ, ƒöŕ ţĥé šàḿé ŕéàšöñ.
Éẋàḿþļéš
# Normalise spelling across a Markdown guide (to stdout)
ksed 's/colour/color/g' guide.md
# Rebrand in place across every Word document
ksed -i 's/Inc\./LLC/' *.docx
# Two substitutions, keeping a .bak backup of each file
ksed -i.bak -e 's/v1/v2/g' -e 's/beta//' locales/en.json
# Edit the French translations rather than the source
ksed --target fr 's/Bonjour/Salut/g' messages.xliff
# Reorder with backreferences
ksed 's/(\w+), (\w+)/\2 \1/' names.txt
# Edit a whole documentation tree in place
ksed -R -i 's/colour/color/g' docs
Öþţîöñš
| Ƒļàĝ | Ḿéàñîñĝ |
|---|---|
-e, --expression SCRIPT | Àđđ à šüƃšţîţüţîöñ šçŕîþţ (ŕéþéàţàƃļé). |
-i, --in-place[=SUFFIX] | Éđîţ ƒîļéš îñ þļàçé; àþþéñđ à ƃàçķüþ SUFFIX îƒ ĝîṽéñ (é.ĝ. -i.bak). |
-R, --recursive | Ŕéçüŕšé îñţö đîŕéçţöŕý àŕĝüḿéñţš. |
--target LOCALE | Éđîţ ţĥé ţŕàñšļàţîöñ ƒöŕ LOCALE îñšţéàđ öƒ ţĥé šöüŕçé. |
--force | Ŵŕîţé àñ éđîţéđ ƃîñàŕý đöçüḿéñţ ţö ţĥé ţéŕḿîñàļ àñýŵàý. |
-f, --format | Öṽéŕŕîđé ƒöŕḿàţ đéţéçţîöñ (é.ĝ. -f json). |
--source-lang | Šöüŕçé ļàñĝüàĝé (đéƒàüļţ en). |
--encoding | Îñþüţ/öüţþüţ éñçöđîñĝ (đéƒàüļţ UTF-8). |
Ŕéçüŕšîöñ îš -R, ñöţ ţĥé -r ţĥé öţĥéŕ üţîļîţîéš üšé. Îñ šéđ, -r ḿéàñš
--regexp-extended, àñđ ƃîñđîñĝ îţ ţö ŕéçüŕšîöñ ĥéŕé ŵöüļđ ŕéŵŕîţé à ŵĥöļé
đîŕéçţöŕý ţŕéé ƒöŕ šöḿéöñé ŵĥö öñļý àšķéđ ƒöŕ à đéŕéñţ ŕéĝéẋþ đîàļéçţ. -r
îš ţĥéŕéƒöŕé ļéƒţ üñƃöüñđ, àñđ ţýþîñĝ îţ îš àñ éŕŕöŕ ŕàţĥéŕ ţĥàñ à šüŕþŕîšé.
Ƒàîţĥƒüļ ŕöüñđ-ţŕîþš
ksed ŕéüšéš kapi'š ŕéàđéŕ/ŵŕîţéŕ þîþéļîñé, šö éđîţîñĝ à šţŕüçţüŕéđ ƒöŕḿàţ àñđ
ŵŕîţîñĝ îţ ƃàçķ þŕéšéŕṽéš éṽéŕýţĥîñĝ ţĥàţ îš ñöţ ţĥé éđîţéđ ţéẋţ. Ƒöŕ ƒöŕḿàţš
ŵîţĥ à šķéļéţöñ (Öƒƒîçé Öþéñ ẊḾĻ àḿöñĝ ţĥéḿ) ţĥé đöçüḿéñţ'š šţŕüçţüŕé, šţýļéš
àñđ ñöñ-ţŕàñšļàţàƃļé çöñţéñţ ŕöüñđ-ţŕîþ üñçĥàñĝéđ; ţĥé ƒîđéļîţý îš šéḿàñţîç
(ţĥé šàḿé ţéẋţ àñđ šţŕüçţüŕé), ñöţ à ƃýţé-ƒöŕ-ƃýţé çöþý. Öñļý ţĥé s///
šüƃšţîţüţîöñ çöḿḿàñđ îš šüþþöŕţéđ; çöḿþöšé ḿüļţîþļé ŵîţĥ -e.
Îñļîñé ƒöŕḿàţţîñĝ ŵîţĥîñ à ƃļöçķ îš þŕéšéŕṽéđ àš ŵéļļ. Ţĥé þàţţéŕñ ḿàţçĥéš ţĥé
ƃļöçķ'š ţéẋţ ŵîţĥ îţš îñļîñé çöđéš ŕéḿöṽéđ, šö à šüƃšţîţüţîöñ çàñ šþàñ à ƃöļđ öŕ
ļîñķéđ šþàñ: s/Hello world/Hi/ ḿàţçĥéš éṽéñ ŵĥéñ ŵöŕļđ îš ƃöļđ. Éđîţîñĝ à
ŵöŕđ îñšîđé à <b> šþàñ ķééþš ţĥé šþàñ àŕöüñđ ţĥé ñéŵ ŵöŕđ.
Ŵĥéñ àñ éđîţ ŕéḿöṽéš ţĥé ţéẋţ à çöđé àþþļîéđ ţö, ŵĥàţ ĥàþþéñš đéþéñđš öñ ŵĥéţĥéŕ
ţĥé çöđé îš đéļéţàƃļé, ţĥé šàḿé ṽöçàƃüļàŕý çöñšţŕàîñţ ţĥé çĥéçķš üšé (šéé
Îñļîñé Ƒöŕḿàţţîñĝ).
À đéļéţàƃļé ƒöŕḿàţţîñĝ šþàñ (ƃöļđ, îţàļîç, à ļîñķ) ţĥàţ îš éḿþţîéđ çöļļàþšéš, šö
ķšéđ ļéàṽéš ñö éḿþţý <b></b> ƃéĥîñđ. À ñöñ-đéļéţàƃļé çöđé (à ļîñé ƃŕéàķ, à
ṽàŕîàƃļé, à þļàçéĥöļđéŕ, à šüƃƃļöçķ ŕéƒéŕéñçé) îš àļŵàýš ķéþţ, éṽéñ ŵĥéñ ţĥé ţéẋţ
àŕöüñđ îţ îš ŕéþļàçéđ.