15 Util ‘sed’ Comanda Sfaturi și Trucuri de zi cu Zi Linux Sarcini de Administrare a Sistemului

Fiecare administrator de sistem are de a face cu fișiere text simplu pe o bază de zi cu zi. Știind cum să vizualizați anumite secțiuni, cum să înlocuiți cuvintele și cum să filtrați conținutul din acele fișiere sunt abilități pe care trebuie să le aveți la îndemână fără a fi nevoie să faceți o căutare Google.,

15 Util ‘sed’ Comanda Sfaturi și Trucuri pentru Linux

În acest articol vom analiza sed, bine-cunoscut stream editor, și a cotei de 15 sfaturi pentru a utiliza în scopul de a realiza obiectivele menționate anterior, și mai mult.

vizualizarea unei game de linii dintr-un document

instrumente precum cap și coadă ne permit să vizualizăm partea de jos sau partea de sus a unui fișier. Ce se întâmplă dacă avem nevoie pentru a vedea o secțiune în mijloc? Următorul sed one-liner va returna liniile 5 prin 10 din myfile.,Txt:

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

vizualizarea întregului fișier, cu excepția unui anumit interval

Pe de altă parte, este posibil să doriți să imprimați întregul fișier, cu excepția unui anumit interval. Pentru a exclude liniile 20 până la 35 din myfile.txt, do:

# sed '20,35d' myfile.txt

vizualizarea liniilor și intervalelor non-consecutive

este posibil să vă intereseze un set de linii non-consecutive sau în mai multe intervale. Să afișăm liniile 5-7 și 10-13 din myfile.,txt:

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

după Cum puteți vedea, -e opțiune ne permite de a executa o anumită acțiune (în acest caz, imprimarea liniilor) pentru fiecare interval.

Înlocuirea unor cuvinte sau de caractere (de bază substituție)

Pentru a înlocui fiecare instanță de cuvântul version cu story în myfile.,de ip route show și o conductă:

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

Compara producția de ip route show cu și fără conductei:

Înlocui Cuvinte sau Caractere în Fișierul

Înlocuirea unor cuvinte sau caractere în interiorul unui interval

Dacă sunteți interesat în înlocuirea unor cuvinte numai într-o linie de interval (intre 30 si 40 de ani, de exemplu), poți să faci:

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

desigur, puteți indica un singur rând prin numărul corespunzător în loc de o gama.,

folosind expresii regulate – substituție avansată) – i

uneori fișierele de configurare sunt încărcate cu comentarii. Deși acest lucru este cu siguranță util, poate fi util să afișați doar directivele de configurare uneori dacă doriți să le vizualizați pe toate dintr-o privire.

Pentru a elimina liniile goale sau cele care încep cu # din fișierul de configurare Apache, face:

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

caret semn urmat de numărul de semn (^#) indică începutul unei linii, întrucât ^$ reprezintă linii goale., Barele verticale indică operații booleene, în timp ce slash-ul înapoi este utilizat pentru a scăpa de barele verticale.

În acest caz, fișierul de configurare Apache are linii cu #’s nu de la început a unor linii, deci *# este folosit pentru a elimina cei la fel de bine.

folosind expresii regulate – substituție avansată) – II

pentru a înlocui un cuvânt care începe cu majuscule sau minuscule cu un alt cuvânt, putem folosi și sed. Pentru a ilustra, să înlocuim cuvântul zip sau Zip cu rar în myfile.,txt:

# sed 's/ip/rar/g' myfile.txt

nu rata: Utilizarea Awk cu Expresii Regulate pentru a Filtra Text în Fișiere

Vizualizare linii conțin cu un anumit model

o Altă utilizare a sed constă în imprimarea linii dintr-un fișier care se potrivesc cu o anumită expresie regulată. De exemplu, am putea fi interesați să vizualizăm activitățile de autorizare și autentificare care au avut loc pe 2 iulie, conform Jurnalului /var/log/secure într-un server CentOS 7.,

În acest caz, modelul pentru a căuta este Jul 2, la fiecare început de linie:

# sed -n '/^Jul 1/ p' /var/log/secure
Jurnale (Linii) din Data de Special

Inserarea de spații în fișiere

Cu sed, putem introduce, de asemenea, spații (rânduri goale) pentru fiecare non-linie goală într-un fișier., Pentru a introduce o linie goală, fiecare rând în LICENȚĂ, un fișier text simplu, fac:

# sed G myfile.txt

Pentru a introduce două linii goale, face:

# sed 'G;G' myfile.txt

Adăugați un majuscule G separate prin punct și virgulă dacă doriți să adăugați mai multe linii goale. Imaginea următoare ilustrează exemplul prezentat în acest sfat:

a Introduce Spații în Fișierul

Acest sfat poate veni la îndemână, dacă doriți să verificați un mare fișier de configurare., Introducerea unui spațiu gol la fiecare altă linie și conducte de ieșire la mai puțin va duce la o experiență de lectură mai prietenos.

Emularea dos2unix cu editare inline

dos2unix programul convertește fișiere text simplu din Windows/Mac formatare pentru Unix/Linux, eliminarea ascunse linie nouă de caractere introdus de unele editoare de text folosite în aceste platforme. Linux, puteți imita funcționalitatea acestuia cu sed în loc să îl instalați.,

În imaginea din stânga se poate vedea de mai multe DOS caractere newline (^M), care ulterior au fost eliminate cu:

# sed -i 's/\r//' myfile.txt
sub Acoperire Fișiere Text de la Windows la Linux

vă Rugăm să rețineți că -i opțiunea de a indica în loc de editare. Apoi, modificările nu vor fi returnate pe ecran, ci vor fi salvate în fișier.,

Notă: puteți introduce DOS newline caractere în timp ce editați un fișier în editorul vim cu Ctrl+V și Ctrl+M.

editare și copiere de rezervă a fișierului original

în vârful anterior am folosit sed pentru a modifica un fișier, dar nu am salvat fișierul original. Uneori este o idee bună să salvați o copie de rezervă a fișierului original doar pentru caz.

Pentru a face asta, indica un sufix următoarele -i opțiune (în ghilimele simple) pentru a fi utilizate pentru a redenumi fișierul original.,

în exemplul următor vom înlocui toate instanțele de acest lucru sau acest lucru (ignorarea caz) cu care în myfile.txt, și vom salva fișierul original ca myfile.txt.orig.

în cele din Urmă, vom folosi dif de utilitate pentru a identifica diferențele dintre cele două fișiere:

# sed -i'.orig' 's/this/that/gi' myfile.txt
Utilizarea sed pentru a Edita și de Rezervă Fișierul Original

Comutare perechi de cuvinte

Să presupunem că aveți un fișier care conține numele complet, în format nume, prenume., Pentru a procesa în mod adecvat fișierul, poate doriți să comutați numele și prenumele.

putem face asta cu sed destul de ușor:

# sed 's/^\(.*\),\(.*\)$/\, /g' names.txt
Comutator Cuvinte în Fișierul

În imaginea de mai sus putem vedea că paranteze, fiind caractere speciale, trebuie să fi scăpat, la fel ca numerele 1 și 2.

aceste numere reprezintă expresiile regulate evidențiate (care trebuie să apară în paranteze):

  1. 1 reprezintă începutul fiecărei linii până la virgulă.,
  2. 2 este un substituent pentru tot ceea ce este drept de virgulă până la sfârșitul liniei.

ieșirea dorită este indicată în format SecondColumn (prenume) + virgulă + spațiu + FirstColumn (prenume). Simțiți-vă liber să-l schimbați în orice doriți.

înlocuirea cuvintelor numai dacă se găsește o potrivire separată

uneori înlocuirea tuturor instanțelor unui cuvânt dat sau a câtorva aleatorii nu este exact ceea ce avem nevoie. Poate că trebuie să efectuăm înlocuirea dacă se găsește o potrivire separată.,

de exemplu, este posibil să dorim să înlocuim start cu stop numai dacă serviciile word se găsesc în aceeași linie. În acest scenariu, iată ce se va întâmpla:

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

în prima linie, start nu va fi înlocuit cu stop, deoarece word services nu apare în acea linie, spre deosebire de a doua linie.,

# sed '/services/ s/start/stop/g' msg.txt
Înlocuiți Cuvintele în Fișierul

Efectuarea a două sau mai multe substituții la o dată

puteți combina două sau mai multe substituții un singur sed comanda. Să înlocuim cuvintele care și linia din myfile.txt cu acest verset, respectiv.,

Notă cum acest lucru poate fi realizat prin utilizarea unui ordinare sed substituire comandă urmat de o virgulă și un al doilea substituire comandă:

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

Acest sfat este ilustrat în imaginea următoare:

Înlocui mai Multe Cuvinte în Fișierul

Combinarea sed și alte comenzi

desigur, sed pot fi combinate cu alte instrumente, în scopul de a crea mai puternic de comenzi., De exemplu, să folosim exemplul dat în vârful #4 și să extragem adresa IP din ieșirea comenzii ip route.

vom începe prin imprimarea numai a liniei în care este cuvântul src. Apoi vom converti mai multe spații într-unul singur., În cele din urmă, vom tăia 9 domeniu (având în vedere un singur spațiu ca separator de câmp), care este în cazul în care adresa IP este:

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

imaginea De mai jos ilustrează fiecare pas din comanda de mai sus:

Combina sed cu Alte Comenzi

Sumar

În acest ghid ne-am împărtășit 15 sed sfaturi și trucuri pentru a vă ajuta cu dvs. de zi cu zi sarcini de administrare a sistemului. Există vreun alt sfat pe care îl utilizați în mod regulat și doriți să îl împărtășiți cu noi și cu restul comunității?,

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *