LFCS: Wéi benotzt Dir GNU sed Kommando fir Dateien am Linux erstellen, z'änneren an ze manipuléieren - Deel 1


D'Linux Foundation huet d'LFCS (Linux Foundation Certified Sysadmin) Zertifizéierung ugekënnegt, en neie Programm deen zielt fir Eenzelpersounen op der ganzer Welt ze hëllefen zertifizéiert ze ginn a Basis bis Zwëschensystemverwaltungsaufgaben fir Linux Systemer. Dëst beinhalt d'Ënnerstëtzung vu lafende Systemer a Servicer, zesumme mat der éischter Hand Troubleshooting an Analyse, a intelligent Entscheedungsprozess fir Themen un Ingenieurteams ze eskaléieren.

Kuckt w.e.g. de folgende Video deen iwwer The Linux Foundation Certification Program demonstréiert.

D'Serie gëtt mam Titel Virbereedung fir den LFCS (Linux Foundation Certified Sysadmin) Parts 1 bis 10 an deckt déi folgend Themen fir Ubuntu, CentOS, an openSUSE:

Dëse Post ass Deel 1 vun enger 20-Tutorial Serie, déi déi néideg Domänen a Kompetenzen ofdecken, déi fir den LFCS Zertifizéierungsexamen erfuerderlech sinn. Wann dat gesot gëtt, brennt Ären Terminal op, a loosst eis ufänken.

Veraarbechtung Text Streams op Linux

Linux behandelt den Input an d'Ausgab vu Programmer als Streamen (oder Sequenzen) vu Charaktere. Fir d'Redirectioun a Päifen ze verstoen, musse mir als éischt déi dräi wichtegst Aarte vun I/O (Input an Output) Streams verstoen, déi tatsächlech speziell Dateie sinn (no Konventioun an UNIX a Linux, Datestroum a Peripherieger, oder Apparatdateien, ginn och als normal Dateie behandelt).

Den Ënnerscheed tëscht > (Redirection-Bedreiwer) an | (Pipeline-Bedreiwer) ass datt wärend deen éischten e Kommando mat enger Datei verbënnt, dee leschten den Output vun engem Kommando mat engem aneren verbënnt. Kommando.

# command > file
# command1 | command2

Zënter dem Viruleedungsbetreiber erstellt oder iwwerschreift Dateien roueg, musse mir et mat extremer Vorsicht benotzen, an et ni mat enger Pipeline verwiesselen. Ee Virdeel vu Päifen op Linux an UNIX Systemer ass datt et keng Zwëschendatei mat enger Päif involvéiert ass - de stdout vum éischte Kommando gëtt net op eng Datei geschriwwe an dann vum zweete Kommando gelies.

Fir déi folgend Praxisübungen benotze mir d'Gedicht \E glécklecht Kand (anonymen Auteur).

Den Numm sed ass kuerz fir Stream Editor. Fir déi déi net mam Begrëff vertraut sinn, gëtt e Stream Editor benotzt fir Basis Texttransformatiounen op engem Input Stream (eng Datei oder Input vun enger Pipeline) auszeféieren.

Déi meescht Basis (a populär) Notzung vu Sed ass d'Auswiesselung vu Personnagen. Mir fänken un mat all Optriede vum klenge Buschtaf y op UPPERCASE Y z'änneren an d'Ausgab op ahappychild2.txt ëmgeleet. De g Fändel weist datt sed d'Substitutioun fir all Instanzen vum Begrëff op all Zeil vum Fichier sollt ausféieren. Wann dëse Fändel ewechgelooss gëtt, ersetzt sed nëmmen déi éischt Optriede vum Begrëff op all Linn.

# sed ‘s/term/replacement/flag’ file
# sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt

Sollt Dir e spezielle Charakter sichen oder ersetzen (wéi /, \, &) musst Dir et entkommen, am Begrëff oder Ersatzstécker, mat engem Réckschnëtt.

Zum Beispill ersetzen mir d'Wuert a fir en Ampersand. Zur selwechter Zäit ersetzen mir d'Wuert I duerch Dir wann deen éischten um Ufank vun enger Zeil fonnt gëtt.

# sed 's/and/\&/g;s/^I/You/g' ahappychild.txt

Am uewe genannte Kommando ass e ^ (Caret Zeechen) e bekannte reguläre Ausdrock dee benotzt gëtt fir den Ufank vun enger Zeil ze representéieren.

Wéi Dir gesitt, kënne mir zwee oder méi Ersatzbefehle kombinéieren (a reegelméisseg Ausdréck dobannen benotzen) andeems se se mat engem Semikolon trennen an de Set an eenzel Zitater ëmschléissen.

Eng aner Notzung vu sed ass e gewielten Deel vun enger Datei ze weisen (oder ze läschen). Am folgende Beispill wäerte mir déi éischt 5 Zeilen vun /var/log/messages vum 8. Jun.

# sed -n '/^Jun  8/ p' /var/log/messages | sed -n 1,5p

Notéiert datt sed Standard all Zeil dréckt. Mir kënnen dëst Verhalen mat der -n Optioun iwwerschreiden an dann soen sed fir ze drécken (gezeechent duerch p) nëmmen den Deel vun der Datei (oder d'Päif) deen dem Muster entsprécht (8. Juni um Ufank vun der Linn am éischte Fall an Linnen 1 bis 5 inklusiv am zweete Fall).

Schlussendlech kann et nëtzlech sinn wann Dir Skripte oder Konfiguratiounsdateien iwwerpréift fir de Code selwer z'inspektéieren an d'Kommentaren ze verloossen. Déi folgend sed One-Liner läscht (d) eidel Zeilen oder déi mat # ufänken (de | Charakter weist e booleschen ODER tëscht deenen zwee reguläre Ausdréck).

# sed '/^#\|^$/d' apache2.conf

De Kommando eenzegaarteg erlaabt eis duplizéiert Zeilen an engem Fichier ze mellen oder ze läschen, andeems Dir Standard op stdout schreift. Mir mussen bemierken datt uniq keng widderholl Linnen erkennt ausser se niewendrun sinn. Also gëtt uniq allgemeng benotzt zesumme mat enger virdru Sortéierung (déi benotzt gëtt fir Zeilen vun Textdateien ze sortéieren). Par défaut hëlt sortéieren dat éischt Feld (getrennt vu Plazen) als Schlësselfeld. Fir en anert Schlësselfeld ze spezifizéieren, musse mir d'Optioun -k benotzen.

De Kommando du –sch /path/to/directory/* stellt d'Plazverbrauch pro Ënnerverzeechnes a Fichieren am spezifizéierte Verzeechnes am mënschlech liesbare Format zréck (weist och en Total pro Verzeechnes), an net bestellt d'Ausgab no Gréisst, awer duerch Ënnerverzeechnes an Dateinumm. Mir kënnen de folgende Kommando benotze fir no Gréisst ze sortéieren.

# du -sch /var/* | sort –h

Dir kënnt d'Zuel vun den Eventer an engem Logbuch no Datum zielen andeems Dir uniq seet fir de Verglach mat den éischte 6 Zeeche (-w 6) vun all Zeil auszeféieren (wou den Datum spezifizéiert ass), a Präfix all Ausgangslinn duerch d'Zuel vun den Optriede (-c) mam folgendem Kommando.

# cat /var/log/mail.log | uniq -c -w 6

Schlussendlech kënnt Dir sort an uniq kombinéieren (wéi se normalerweis sinn). Betruecht déi folgend Datei mat enger Lëscht vun den Donateuren, Spendendatum a Betrag. Ugeholl mir wëllen wëssen wéivill eenzegaarteg Spender et ginn. Mir benotze de folgende Kommando fir dat éischt Feld ze schneiden (Felder sinn duerch e Colon ofgrenzt), no Numm sortéieren an duplizéiert Linnen ewechhuelen.

# cat sortuniq.txt | cut -d: -f1 | sort | uniq

Lies Och: 13 cat Kommando Beispiller

grep sicht Textdateien oder (Kommandoausgang) fir d'Optriede vun engem spezifizéierte reguläre Ausdrock a gitt all Zeil aus, déi e Match mam Standardausgang enthält.

Weist d'Informatioun vun /etc/passwd fir de Benotzer gacanepa, ignoréiert de Fall.

# grep -i gacanepa /etc/passwd

Weist all den Inhalt vun /etc deem säin Numm mat rc ufänkt, gefollegt vun enger eenzeger Zuel.

# ls -l /etc | grep rc[0-9]

Lies Och: 12 grep Kommando Beispiller

De Kommando tr kann benotzt ginn fir Zeechen aus stdin ze iwwersetzen (änneren) oder ze läschen, an d'Resultat op stdout ze schreiwen.

Änneren all kleng Buschtawen zu grouss an sortuniq.txt Fichier.

# cat sortuniq.txt | tr [:lower:] [:upper:]

Dréckt den Ofgrenzer am Ausgang vun ls –l op nëmmen ee Raum.

# ls -l | tr -s ' '

De Kommando cut extrahéiert Portioune vun Inputlinnen (vu stdin oder Dateien) a weist d'Resultat op Standardoutput, baséiert op Unzuel vun Bytes (-b Optioun), Zeechen (< b>-c), oder Felder (-f). An dësem leschte Fall (baséiert op Felder), ass den Default Feldtrener eng Tab, awer en anert Ofgrenzer kann uginn ginn andeems Dir d'Optioun -d benotzt.

Extraitéiert d'Benotzerkonten an d'Default-Shells, déi hinnen zougewisen sinn aus /etc/passwd (d'Optioun –d erlaabt eis de Feldbegrenzer ze spezifizéieren, an den –f Schalter weist wéi ee Feld(e) extrahéiert ginn.

# cat /etc/passwd | cut -d: -f1,7

Zesummefaassend wäerte mir en Textstroum erstellen, deen aus den éischten an drëtten net-eidel Dateien vum Output vum leschte Kommando besteet. Mir wäerten grep als éischte Filter benotzen fir no Sessiounen vum Benotzer gacanepa ze kontrolléieren, da dréckt Ofgrenzer op nëmmen eng Plaz (tr -s ' ' ). Als nächst wäerte mir déi éischt an drëtt Felder mat Schnëtt extrahéieren, a schliisslech sortéieren no dem zweete Feld (IP Adressen an dësem Fall) weist eenzegaarteg.

# last | grep gacanepa | tr -s ' ' | cut -d' ' -f1,3 | sort -k2 | uniq

Deen uewe genannte Kommando weist wéi verschidde Kommandoen a Päifen kombinéiert kënne ginn fir gefilterte Donnéeën no eise Wënsch ze kréien. Fillt Iech gratis et och duerch Deeler ze lafen, fir Iech ze hëllefen d'Ausgab ze gesinn, déi vun engem Kommando op deen nächste pipelined ass (dëst kann e super Léiererfahrung sinn, iwwregens!).

Resumé

Och wann dëst Beispill (zesumme mat de Rescht vun de Beispiller am aktuellen Tutorial) vläicht op den éischte Bléck net ganz nëtzlech schéngt, si si e flotte Startpunkt fir mat Kommandoen ze experimentéieren déi benotzt gi fir Dateien aus dem Linux z'erstellen, z'änneren an ze manipuléieren. Kommando Linn. Fillt gratis Är Froen a Kommentaren hei drënner ze verloossen - si wäerte vill appréciéiert ginn!

  1. Iwwer de LFCS
  2. Firwat eng Linux Foundation Zertifizéierung kréien?
  3. Registréiert Iech fir den LFCS Examen