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

Linux-kommandoer og Shell-færdigheder

sed: Redigering af streams uden at åbne en editor

sed-redigeringer sidelæns: hele tekststrømme passerer gennem den, kommer transformeret ud, og ingen editor åbner. Dens omdømme kommer fra -i, som forvandler en en-line substitution til en batch-operation på tværs af tusindvis af filer, og fra katastrofehistorier fra administratorer, der kørte den uden et backup-suffiks. Den sikre arbejdsgang ændres aldrig: kør substitutionen synlig, bekræft outputtet, tilføj derefter -i med et suffiks og behold exitkoden.

Vigtige pointer

  1. Forhåndsvisning før du forpligter dig: sed -n '10,20p' fil viser et linjeinterval, og den samme -n plus p kombination udskriver kun linjer, der matcher et regex eller en adresse.
  2. Erstat med flag, der gør, hvad du mener: s/gammelt/nyt/g for alle kampe, et tal som 2g for kun den anden, og -E for udvidet regex uden en side med omvendt skråstreg escapes.
  3. In-place redigeringer får et suffiks, ingen undtagelser: sed -i.bak 's/http:/https:/g' app holder en sikkerhedskopi med samme navn ud for hver ændring; det suffiks har reddet flere implementeringer end nogen redaktørs fortryd-historik.
  4. Afgrænsere er gratis: s|/var/www|/srv/app|g (eller s#...#g) undgår skråstreg-undslippende kampe, når dit mønster er fyldt med stier.
  5. -i er ikke atomisk: et nedbrud eller en dårlig regex midt-batch engang efterladt halvt omskrevne filer bag sig, så massejobs kører mod kopier eller git-trackede træer, aldrig den eneste kopi.
  6. GNU og BSD sed er uenige om -i: BSD kræver suffikset før scriptet (sed -i '' virker på macOS, er ikke en Linux-syntaks), hvilket er endnu en grund til, at portabilitetsscripts helt undgår -i.
  7. Delete og isolate er ærlige verber: 'd' fjerner matchende linjer (sed '/^#/d' striber kommentarer), og -n med et interval isolerer en sektion; begge læser bedre end smarte udskiftninger.
  8. Alt tidligere enkeltlinjeredigeringer, bogstavelige flerlinieblokke eller stateful joins hører til i awk eller et rigtigt script; at tvinge sed til at udføre programmørarbejde er, hvordan ulæselige one-liners bliver født.

Note fra marken

Min første sed -i uden et .bak-suffiks ramte en produktions-nginx-konfiguration lige før eftermiddagens trafikpeak. Siden da har hver redigering på stedet et backup-suffiks, og jeg læser dry-run-outputtet, før -i overhovedet nærmer sig kommandoen.

Ofte stillede spørgsmål

Hvordan redigerer jeg kun linjer, der matcher noget andet?

Adresser dem: sed '/cache/s/true/false/' vender kun sandt til falsk på cache-linjer, og rækker som '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' omfangsredigeringer til blokke; adressen går først, kommandoen derefter.

Hvorfor vil sed ikke matche enderne af linjer i en Windows-redigeret fil?

Disse linjer slutter med vognretur-tegn, som '$'-ankrene ikke forventer; strip dem med tr først eller normaliser på vej ind, og multiline indhold hører stadig til i awk eller Perl med -0777.

Er sed hurtigere end awk for simple udskiftninger?

Marginalt og irrelevant; begge afsluttes på millisekunder på filer i konfigurationsstørrelse. Vælg efter læsbarhed, for en kollega skal udmangle din one-liner om seks måneder.

Kan jeg indsætte hele konfigurationsblokke med sed?

Ja: 'a' tilføjer efter, 'i' indsætter før, og 'c' erstatter linjen, men hold den indsatte tekst enkel og entydig; rigtige blokke hører hjemme i en skabelonfil eller et korrekt klargøringstrin.

Sådan hjælper Kinetikatech med linux-kommandoer og shell-færdigheder

Det er, hvad vi gør i dag: De kommandoer og scriptvaner, der afgør, om en administrator driver en server eller bekæmper den: søg, transformer, overfør og overvåg tekst og processer med de værktøjer, der findes i enhver basisinstallation. Vores Sikkerhed på Linux-servere og Serveradministration dækker det hele, fra vurdering til implementering, overvågning 24/7 og akut responstid på 30 minutter.

Tal med en ingeniør

Serverproblemer? Hacket website? Langsom indlæsning?

Kritiske problemer løst inden for 30 minutter — døgnet rundt, 7 dage om ugen.

Få akut hjælp support@kinetikatech.com