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

Linux-kommandon och skalfärdigheter

sed: Redigera strömmar utan att öppna en redigerare

sed redigeringar i sidled: hela textströmmar passerar genom den, kommer ut transformerade och ingen redigerare öppnas. Dess rykte kommer från -i, som förvandlar en enradsersättning till en batchoperation över tusentals filer, och från katastrofberättelser om administratörer som körde den utan ett backupsuffix. Det säkra arbetsflödet ändras aldrig: kör substitutionen synlig, bekräfta utdata, lägg sedan till -i med ett suffix och behåll utgångskoden.

Nyckelpunkter

  • Förhandsgranska innan du commit: sed -n '10,20p'-fil visar ett radintervall, och samma -n plus p-kombination skriver bara ut rader som matchar ett regex eller adress.
  • Ersätt med flaggor som gör det du menar: s/old/new/g för alla matchningar, ett nummer som 2g för bara den andra och -E för utökat regex utan en sida med snedstreck.
  • Redigeringar på plats får ett suffix, inga undantag: sed -i.bak 's/http://https:/g'-appen håller en säkerhetskopia med samma namn bredvid varje ändring; det suffixet har räddat fler installationer än någon redaktörs ångrahistorik.
  • Avgränsare är gratis: s|/var/www|/srv/app|g (eller s#...#g) undviker slagsmål som undviker snedstreck när ditt mönster är fullt av vägar.
  • -i är inte atomär: en krasch eller ett dåligt regex i mitten av batchen lämnade en gång halvskrivna filer bakom sig, så massjobb körs mot kopior eller git-tracked trees, aldrig den enda kopian.
  • GNU och BSD sed är oense om -i: BSD kräver suffixet innan skriptet (sed -i '' fungerar på macOS, är inte en Linux-syntax), vilket är ytterligare en anledning till att portabilitetsskript undviker -i helt.
  • Ta bort och isolera är ärliga verb: 'd' tar bort matchande rader (sed '/^#/d' remsar kommentarer), och -n med ett intervall isolerar ett avsnitt; båda läser bättre än smarta byten.
  • Allt tidigare redigeringar på en rad, bokstavliga flerradsblock eller tillståndsfulla kopplingar hör hemma i awk eller ett riktigt skript; Att tvinga sed att utföra programmeringsarbete är hur oläsliga one-liners föds.

Fältnotis

Min första sed -i utan ett .bak-suffix träffade en produktions-nginx-konfiguration precis före eftermiddagens trafiktopp. Sedan dess har varje redigering på plats ett backup-suffix, och jag läser torrkörningen innan -i ens närmar sig kommandot.

Vanliga frågor

Hur redigerar jag bara rader som matchar något annat?

Adressera dem: sed '/cache/s/true/false/' vänder sann till falsk endast på cache-rader, och intervall som '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' omfångsredigeringar till block; adressen går först, kommandot därefter.

Varför kommer sed inte att matcha ändarna på raderna i en Windows-redigerad fil?

Dessa rader slutar med vagnretur-tecken som '$'-ankarna inte förväntar sig; strippa dem med tr först eller normalisera på vägen in, och flerradsinnehåll hör fortfarande hemma i awk eller Perl med -0777.

Är sed snabbare än awk för enkla ersättningar?

Marginellt och irrelevant; båda slutar på millisekunder på filer i konfigurationsstorlek. Välj efter läsbarhet, eftersom en kollega måste ta bort din one-liner på sex månader.

Kan jag infoga hela konfigurationsblock med sed?

Ja: 'a' läggs till efter, 'i' infogar före och 'c' ersätter raden, men håll den infogade texten enkel och ensidig; riktiga block hör hemma i en mallfil eller ett korrekt provisioneringssteg.

Så hjälper Kinetikatech dig med linux-kommandon och skalfärdigheter

Ärligt talat kommer de flesta team till oss efter att ha försökt själva först: Kommandon och skriptvanor som avgör om en administratör driver en server eller bekämpar den: sök, transformera, överföra och övervaka text och processer med verktygen som finns i varje basinstallation. Vår Linux-serversäkerhet och Serverhantering-tjänst finns så att du slipper lära dig linux-kommandon och skalfärdigheter den hårda vägen, vi tar installationen, bevakningen och överraskningarna klockan tre på morgonen.

Prata med en ingenjör

Serverproblem? Hackad webbplats? Långsam sida?

Kritiska incidenter besvaras inom 30 minuter — dygnet runt, 7 dagar i veckan.

Begär akutsupport support@kinetikatech.com