NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
CS

Linuxové příkazy

sed: Úpravy streamů bez otevření editoru

sed upravuje bokem: procházejí jím celé proudy textu, vycházejí transformované a neotevře se žádný editor. Jeho reputace pochází z -i, které mění jednořádkovou substituci na dávkovou operaci s tisíci soubory, a z příběhů o katastrofách administrátorů, kteří to spustili bez záložní přípony. Bezpečný pracovní postup se nikdy nemění: spusťte substituci jako viditelnou, potvrďte výstup, poté přidejte -i s příponou a ponechte výstupní kód.

Klíčové body

  • Náhled před potvrzením: soubor sed -n '10,20p' zobrazuje rozsah řádků a stejná kombinace -n plus p vytiskne pouze řádky, které odpovídají regulárnímu výrazu nebo adrese.
  • Nahraďte příznaky, které dělají to, co máte na mysli: s/starý/nový/g pro všechny shody, číslo jako 2g jen pro sekundu a -E pro rozšířený regulární výraz bez stránky úniků zpětného lomítka.
  • Úpravy na místě mají příponu, žádné výjimky: aplikace sed -i.bak 's/http:/https:/g' uchovává zálohu se stejným názvem vedle každé změny; tato přípona zachránila více nasazení než historie zrušení jakéhokoli editoru.
  • Oddělovače jsou zdarma: s|/var/www|/srv/app|g (nebo s#...#g) se vyhýbá bojům s útěkem, když je váš vzor plný cest.
  • -i není atomické: selhání nebo špatný regex uprostřed dávky jednou zanechaly napůl přepsané soubory, takže hromadné úlohy běží proti kopiím nebo stromům sledovaným git, nikdy proti jediné kopii.
  • GNU a BSD sed nesouhlasí na -i: BSD vyžaduje příponu před skriptem (sed -i '' funguje na macOS, není syntaxí Linuxu), což je další důvod, proč se přenosné skripty úplně vyhýbají -i.
  • Smazat a izolovat jsou poctivá slovesa: 'd' odstraňuje odpovídající řádky (sed '/^#/d' odstraňuje komentáře) a -n s rozsahem izoluje sekci; oba se čtou lépe než chytré substituce.
  • Cokoli po jednořádkových úpravách, doslovných víceřádkových blokech nebo stavových spojeních patří do awk nebo skutečného skriptu; donucení sed dělat programátorskou práci je způsob, jak se rodí nečitelné jednolinky.

Poznámka z terénu

Můj první sed -i bez přípony .bak narazil na produkční konfiguraci nginx těsně před odpolední špičkou provozu. Od té doby každá editace na místě nese záložní příponu a já četl výstup suchého běhu ještě předtím, než se -i přiblíží k příkazu.

Časté dotazy

Jak upravím pouze řádky, které odpovídají něčemu jinému?

Oslovte je: sed '/cache/s/true/false/' překlopí true na false pouze na řádcích mezipaměti a rozsahy jako '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' rozsah úprav do bloků; adresa je první, příkaz druhý.

Proč se sed nebude shodovat s konci řádků v souboru upraveném systémem Windows?

Tyto řádky končí znaky pro návrat vozíku, které kotvy '$' neočekávají; odstraňte je nejprve pomocí tr nebo normalizujte na cestě dovnitř a víceřádkový obsah stále patří do awk nebo Perl s -0777.

Je sed rychlejší než awk pro jednoduché výměny?

Okrajově a irelevantně; oba skončí v milisekundách u souborů o velikosti config. Vybírejte podle čitelnosti, protože kolega musí vaši jednolinku rozbalit za šest měsíců.

Mohu vložit celé konfigurační bloky pomocí sed?

Ano: 'a' se připojuje za, 'i' vkládá před a 'c' nahrazuje řádek, ale vkládaný text je jednoduchý a jednoúčelový; skutečné bloky patří do souboru šablony nebo do správného kroku zřizování.

Jak Kinetikatech pomáhá s linuxové příkazy

Nemusíte se stát odborníkem na linuxové příkazy: Příkazy a skriptovací návyky, které rozhodují o tom, zda správce provozuje server nebo s ním bojuje: prohledávejte, transformujte, přenášejte a dohlížejte na text a procesy pomocí nástrojů, které jsou součástí každé základní instalace. Přesně proto existuje Zabezpečení linuxových serverů a Správa serverů: zprovoznění, zpevnění, monitoring a člověk ve službě dnem i nocí.

Promluvte si s inženýrem

Problém se serverem? Hacknutý web? Pomalé načítání?

Kritické problémy vyřešeny do 30 minut — nepřetržitě, 7 dní v týdnu.

Požádat o pohotovostní podporu support@kinetikatech.com