15 Nëtzlech Kommando Tipps an Tricks fir Daily Linux System Administration Aufgaben


All Systemadministrator muss all Dag mat Einfache Textdateien ëmgoen. Wësse wéi Dir verschidde Sektiounen kuckt, wéi Dir Wierder ersetzt a wéi Dir Inhalter aus dëse Dateien filtert, sinn Fäegkeeten déi Dir braucht ouni eng Google Sich ze maachen.

An dësem Artikel wäerte mir sed iwwerpréiwen, de bekannte Stream Editor, an deelen 15 Tipps fir et ze benotzen fir déi virdru genannten Ziler z'erreechen, a méi.

1. Gesinn eng Rei vun Zeilen vun engem Dokument

Tools wéi Kapp a Schwanz erlaaben eis ënnen oder uewen vun enger Datei ze gesinn. Wat wa mir eng Sektioun an der Mëtt musse kucken? Déi folgend sed One-Liner wäert d'Linnen 5 bis 10 vun myfile.txt zréckginn:

# sed -n '5,10p' myfile.txt

2. Gesinn de ganze Fichier ausser engem bestëmmte Beräich

Op der anerer Säit ass et méiglech datt Dir déi ganz Datei drécke wëllt ausser e bestëmmte Beräich. Fir d'Linnen 20 bis 35 aus myfile.txt auszeschléissen, maacht:

# sed '20,35d' myfile.txt

3. Gesinn Net-konsekutiv Linnen a Beräicher

Et ass méiglech datt Dir un engem Set vun net-konsekutiv Linnen interesséiert sidd, oder a méi wéi enger Rei. Loosst eis d'Linnen 5-7 an 10-13 vun myfile.txt weisen:

# sed -n -e '5,7p' -e '10,13p' myfile.txt

Wéi Dir gesitt, erlaabt d'Optioun -e eis eng bestëmmten Aktioun auszeféieren (an dësem Fall Zeilen drécken) fir all Beräich.

4. Wierder oder Zeechen ersetzen (Basis Ersatz)

Fir all Instanz vum Wuert Versioun duerch Geschicht am myfile.txt ze ersetzen, maacht:

# sed 's/version/story/g' myfile.txt

Zousätzlech, wëllt Dir vläicht iwwerleeën gi amplaz g ze benotzen fir Zeechen ze ignoréieren:

# sed 's/version/story/gi' myfile.txt

Fir e puer eidel Plazen mat engem eenzege Raum ze ersetzen, benotze mir d'Ausgab vun ip Route Show an eng Pipeline:

# ip route show | sed 's/  */ /g'

Vergläicht d'Ausgab vun ip Route Show mat an ouni Pipeline:

5. Ersetzen Wierder oder Zeechen an engem Beräich

Wann Dir interesséiert sidd fir Wierder nëmmen an engem Zeilberäich ze ersetzen (zum Beispill 30 bis 40), kënnt Dir maachen:

# sed '30,40 s/version/story/g' myfile.txt

Natierlech kënnt Dir eng eenzeg Zeil duerch seng entspriechend Zuel uginn anstatt eng Rei.

6. Regelméisseg Ausdréck benotzen (fortgeschratt Substitutioun) - I

Heiansdo sinn Konfiguratiounsdateien mat Kommentaren gelueden. Och wann dëst sécherlech nëtzlech ass, kann et hëllefräich sinn nëmmen d'Konfiguratiounsdirektiven heiansdo ze weisen wann Dir se all op ee Bléck wëllt gesinn.

Fir eidel Zeilen ze läschen oder déi mat # aus der Apache Konfiguratiounsdatei ufänken, maacht:

# sed '/^#\|^$\| *#/d' httpd.conf

D'Caret-Zeechen gefollegt vum Nummerschëld (^#) weist den Ufank vun enger Zeil un, wärend ^$ eidel Zeilen duerstellt. Déi vertikal Baren weisen boolesch Operatiounen un, wärend de Réckschnëtt benotzt gëtt fir de vertikale Baren ze entkommen.

An dësem bestëmmte Fall huet d'Apache Konfiguratiounsdatei Zeilen mat #'s net um Ufank vun e puer Zeilen, also gëtt *# benotzt fir déi och ze läschen.

7. Regelméisseg Ausdréck benotzen (fortgeschratt Substitutioun) - II

Fir e Wuert ze ersetzen, deen mat grousser Buschtaf oder Klengschrëft mat engem anere Wuert fänkt, kënne mir och sed benotzen. Fir ze illustréieren, loosst eis d'Wuert Zip oder Zip duerch rar an myfile.txt ersetzen:

# sed 's/[Zz]ip/rar/g' myfile.txt

8. Gesinn Linnen mat engem bestëmmte Muster enthalen

Eng aner Notzung vu Sed besteet doran d'Linnen aus enger Datei ze drécken déi mat engem bestëmmte reguläre Ausdrock passen. Zum Beispill kënne mir interesséiert sinn d'Autorisatioun an d'Authentifikatiounsaktivitéiten ze gesinn, déi den 2. Juli stattfonnt hunn, wéi pro /var/log/secure Log an engem CentOS 7 Server.

An dësem Fall ass d'Muster fir no ze sichen den 2. Juli am Ufank vun all Zeil:

# sed -n '/^Jul  1/ p' /var/log/secure

9. Plazen an Fichieren opginn

Mat sed kënne mir och Plazen (eidel Zeilen) fir all net eidel Linn an enger Datei aginn. Fir eng eidel Zeil all aner Zeil an der LICENSE anzeginn, eng einfach Textdatei, maacht:

# sed G myfile.txt

Fir zwou eidel Zeilen anzeginn, maacht:

# sed 'G;G' myfile.txt

Füügt e grousse Buschtaf G, getrennt vun engem Semikolon, wann Dir méi eidel Zeilen derbäi wëllt. Déi folgend Bild illustréiert d'Beispill an dësem Tipp beschriwwen:

Dësen Tipp ka praktesch kommen wann Dir eng grouss Konfiguratiounsdatei wëllt iwwerpréiwen. Eng eidel Plaz all aner Zeil setzen an d'Ausgab op manner päifen wäert zu enger méi frëndlecher Lieserfarung resultéieren.

10. Emuléieren dos2unix mat inline Redaktioun

Den dos2unix Programm konvertéiert Einfache Textdateien vu Windows/Mac-Formatéierung op Unix/Linux, andeems verstoppte Newline-Charaktere geläscht ginn, déi vun e puer Texteditoren agesat ginn, déi an dëse Plattformen benotzt ginn. Wann et net an Ärem Linux System installéiert ass, kënnt Dir seng Funktionalitéit mat sed mimikéieren anstatt se z'installéieren.

Am Bild lénks kënne mir e puer DOS Newline Zeechen (^M) gesinn, déi spéider mat:

# sed -i 's/\r//' myfile.txt

Notéiert w.e.g. datt d'Optioun -i op der Plaz Ännerung ugeet. Da ginn d'Ännerungen net op den Ecran zréckginn, awer an d'Datei gespäichert.

Bemierkung: Dir kënnt DOS Newline Zeeche setzen wärend Dir e Fichier am vim Editor mat Ctrl+V an Ctrl+M ännert.

11. Am Plaz Redaktioun an Backupsatellit Original Fichier

Am virege Tipp hu mir sed benotzt fir eng Datei z'änneren awer hunn d'Original Datei net gespäichert. Heiansdo ass et eng gutt Iddi fir eng Backupkopie vun der Originaldatei just am Fall ze späicheren.

Fir dat ze maachen, gitt e Suffix no der -i Optioun (bannent eenzelne Zitater) un fir d'Original Datei ëmbenennen.

Am folgende Beispill ersetzen mir all Instanzen vun dësem oder Dëst (Ignoréiere Fall) mat deem an myfile.txt, a mir späicheren d'Original Datei als myfile.txt.orig.

Schlussendlech benotze mir diff Utility fir d'Ënnerscheeder tëscht béide Dateien z'identifizéieren:

# sed -i'.orig' 's/this/that/gi' myfile.txt

12. Wiesselen Puer Wierder

Loosst eis unhuelen datt Dir eng Datei hutt mat vollen Nimm am Format Virnumm, Familljennumm. Fir d'Datei adequat ze veraarbechten, kënnt Dir de Familljennumm an den Virnumm wiesselen.

Mir kënnen dat mat Sed relativ einfach maachen:

# sed 's/^\(.*\),\(.*\)$/\, /g' names.txt

Am Bild hei uewen kënne mir gesinn datt Klammeren, déi speziell Zeechen sinn, musse flüchten, sou wéi d'Zuelen 1 an 2.

Dës Zuelen representéieren déi markéiert regulär Ausdréck (déi an de Klammeren musse erschéngen):

  1. 1 representéiert den Ufank vun all Zeil bis zum Komma.
  2. 2 ass e Plazhalter fir alles wat richteg vum Komma um Enn vun der Linn ass.

De gewënschten Ausgang gëtt am Format SecondColumn (Vamilljennumm) + Comma + Space + FirstColumn (Virnumm) uginn. Fillen gratis et ze änneren op wat Dir wëllt.

13. Ersetzen Wierder nëmmen wann eng separat Match fonnt ass

Heiansdo all Instanzen vun engem bestëmmte Wuert ersetzen, oder e puer zoufälleg, ass net genau dat wat mir brauchen. Vläicht musse mir den Ersatz maachen wann e separaten Match fonnt gëtt.

Zum Beispill kënne mir Start mat Stop ersetzen nëmmen wann d'Wuert Servicer an der selwechter Linn fonnt gëtt. An dësem Szenario, hei ass wat geschitt:

We need to start partying at work,
but let’s remember to start all services first.

An der éischter Zeil gëtt Start net duerch Stop ersat, well d'Wuert Servicer net an där Linn steet, am Géigesaz zu der zweeter Zeil.

# sed '/services/ s/start/stop/g' msg.txt

14. Leeschtung zwee oder méi Auswiesselungen op eemol

Dir kënnt zwee oder méi Auswiesselungen engem eenzege sed Kommando kombinéieren. Loosst eis d'Wierder déi an Zeil an myfile.txt ersetzen duerch Dëst respektiv Vers.

Notéiert wéi dëst ka gemaach ginn andeems Dir e gewéinleche sed Substitutiounskommando benotzt, gefollegt vun engem Semikolon an en zweeten Ersatzbefehl:

# sed -i 's/that/this/gi;s/line/verse/gi' myfile.txt

Dësen Tipp ass am folgende Bild illustréiert:

15. Kombinéiert sed an aner Kommandoen

Natierlech kann sed mat aneren Tools kombinéiert ginn fir méi mächteg Kommandoen ze kreéieren. Zum Beispill, loosst eis d'Beispill benotzen, dat am TIP #4 uginn ass an eis IP Adress aus dem Output vum ip route Kommando extrahéieren.

Mir fänken un mat nëmmen d'Linn ze drécken wou d'Wuert src ass. Da konvertéiere mir verschidde Plazen an een eenzegen. Schlussendlech wäerte mir dat 9. Feld schneiden (wann een eenzege Raum als Feldseparator berücksichtegt), dat ass wou d'IP Adress ass:

# ip route show | sed -n '/src/p' | sed -e 's/  */ /g' | cut -d' ' -f9

D'Bild hei ënnen illustréiert all Schrëtt vum uewe genannte Kommando:

Resumé

An dësem Guide hu mir 15 Sed Tipps an Tricks gedeelt fir Iech mat Ären alldeegleche Systemadministratiounsaufgaben ze hëllefen. Gëtt et en aneren Tipp deen Dir regelméisseg benotzt a wëllt mat eis an dem Rescht vun der Gemeinschaft deelen?

Wann jo, fille sech frei fir eis matzedeelen andeems Dir de Kommentarformular hei drënner benotzt. Froen a Kommentarer sinn och wëllkomm - mir freeën eis vun Iech ze héieren!