![Cum să setați dispozitivul audio implicit pe Windows 11](/f/f7cccdd37013b1a8afadfffe2c765960.jpg?width=100&height=100)
Fiecare administrator de sistem trebuie să se ocupe zilnic de fișiere cu text simplu. Ș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ă efectuați o căutare pe Google.
În acest articol vom trece în revistă sed, binecunoscutul editor de fluxuri și vom împărtăși 15 sfaturi pentru a-l utiliza pentru a îndeplini obiectivele menționate anterior și multe altele.
Instrumente precum capul și coada permiteți-ne să vizualizăm partea de jos sau partea de sus a unui fișier. Ce se întâmplă dacă trebuie să vizualizăm o secțiune din mijloc? Următoarea linie sed va întoarce linii 5 prin 10 din myfile.txt:
# sed -n '5,10p' myfile.txt.
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 prin 35 din myfile.txt, faceți:# sed '20, 35d 'myfile.txt.
Este posibil să vă intereseze un set de linii non-consecutive sau mai mult de o gamă. Să afișăm linii 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țiunea ne permite să executăm o acțiune dată (în acest caz, linii de imprimare) pentru fiecare interval.
Pentru a înlocui fiecare instanță a cuvântului versiune
cu poveste
în myfile.txt, faceți:
# sed 's / version / story / g' myfile.txt.
În plus, vă recomandăm să utilizați gi
in loc de g
pentru a ignora majuscule:
# sed 's / version / story / gi' myfile.txt.
Pentru a înlocui mai multe spații goale cu un singur spațiu, vom utiliza ieșirea din spectacol de traseu ip
și o conductă:
# ip route show | sed 's / * / / g'
Comparați rezultatul spectacol de traseu ip
cu și fără conductă:
Dacă sunteți interesat să înlocuiți cuvintele numai într-un interval de linii (30 prin 40, de exemplu), puteți face:
# sed '30, 40 s / version / story / g 'myfile.txt.
Desigur, puteți indica o singură linie prin numărul corespunzător în locul unui interval.
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 uneori doar directivele de configurare, dacă doriți să le vizualizați dintr-o privire.
Pentru a elimina liniile goale sau cele care încep cu #
din fișierul de configurare Apache, faceți:
# sed '/ ^ # \ | ^ $ \ | * # / d 'httpd.conf.
Semnul caret urmat de semnul numeric (^#)
indică începutul unei linii, în timp ce ^$
reprezintă linii goale. Barele verticale indică operații booleene, în timp ce barele oblice înapoi sunt folosite pentru a scăpa de barele verticale.
În acest caz particular, fișierul de configurare Apache are linii cu #
nu la începutul unor rânduri, deci *#
este folosit pentru a elimina și acestea.
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 fermoar sau Zip cu rar in myfile.txt:
# sed 's / [Zz] ip / rar / g' myfile.txt.
Nu ratați:Utilizați Awk cu expresii regulate pentru a filtra textul în fișiere
O altă utilizare a sed constă în tipărirea liniilor dintr-un fișier care se potrivesc cu o expresie regulată dată. De exemplu, ne-ar putea interesa să vizualizăm activitățile de autorizare și autentificare care au avut loc la 2 iulie, conform /var/log/secure conectați-vă a CentOS 7 Server.
În acest caz, modelul de căutat este 2 iulie la începutul fiecărei linii:
# sed -n '/ ^ 1 iul / p' / var / log / secure.
Cu sed, de asemenea, putem insera spații (linii goale) pentru fiecare linie ne-goală într-un fișier. Pentru a insera o linie goală la fiecare altă linie în LICENȚĂ, un fișier text simplu, faceți:
# sed G myfile.txt.
Pentru a insera două linii goale, faceți:
# sed 'G; G 'myfile.txt.
Adăugați un majuscule G separate printr-un punct și virgulă dacă doriți să adăugați mai multe linii goale. Următoarea imagine ilustrează exemplul prezentat în acest sfat:
Acest sfat poate fi util dacă doriți să inspectați un fișier de configurare mare. Introducerea unui spațiu gol la fiecare altă linie și canalizarea ieșirii la mai puțin va duce la o experiență de citire mai prietenoasă.
dos2unix programul convertește fișiere text simple din formatarea Windows / Mac în Unix / Linux, eliminând caracterele ascunse din linia nouă inserate de unii editori de text utilizați în acele platforme. Dacă nu este instalat în sistemul dvs. Linux, puteți imita funcționalitatea acestuia cu sed în loc să-l instalați.
În imaginea din stânga putem vedea mai multe caractere DOS newline (^ M)
, care au fost ulterior eliminate cu:
# sed -i 's / \ r //' myfile.txt.
Vă rugăm să rețineți că -i
opțiunea indică editarea în loc. Apoi modificările nu vor fi returnate pe ecran, ci vor fi salvate în fișier.
Notă: Puteți insera caractere de linie nouă DOS în timp ce editarea unui fișier în editorul vim cu Ctrl + V
și Ctrl + M
.
În sfatul anterior am folosit sed pentru a modifica un fișier, dar nu a salvat fișierul original. Uneori este o idee bună să salvați o copie de rezervă a fișierului original pentru orice eventualitate.
Pentru aceasta, indicați un sufix după -i
opțiune (în ghilimele simple) care va fi utilizată pentru a redenumi fișierul original.
În exemplul următor vom înlocui toate instanțele de acest sau Acest (ignorând cazul) cu cel din myfile.txt, și vom salva fișierul original ca fișierul meu.txt.orig.
În cele din urmă, vom folosi utilitate dif pentru a identifica diferențele dintre ambele fișiere:
# sed -i'.orig '' s / this / that / gi 'myfile.txt.
Să presupunem că aveți un fișier care conține nume complete în format Nume, Nume. Pentru a procesa în mod adecvat fișierul, poate doriți să comutați Nume și Nume.
Putem face asta cu sed destul de ușor:
# sed 's / ^ \ (. * \), \ (. * \) $ / \, / g' names.txt.
În imaginea de mai sus putem vedea că parantezele, fiind caractere speciale, trebuie să fie evadate, la fel ca și numerele 1 și 2.
Aceste numere reprezintă expresiile regulate evidențiate (care trebuie să apară în paranteze):
Ieșirea dorită este indicată în format SecondColumn (Nume) + virgulă + spaţiu + FirstColumn (Nume). Simțiți-vă liber să o schimbați la orice doriți.
Uneori, înlocuirea tuturor instanțelor unui anumit cuvânt sau a câtorva aleatoare nu este tocmai 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ă cuvântul servicii se găsește în aceeași linie. În acest scenariu, iată ce se va întâmpla:
Trebuie să începem petreceri la locul de muncă, dar să ne amintim să începem mai întâi toate serviciile.
În prima linie, start nu va fi înlocuit cu Stop deoarece cuvântul servicii nu apare în acea linie, spre deosebire de a doua linie.
# sed '/ services / s / start / stop / g' msg.txt.
Puteți combina două sau mai multe înlocuiri una singură sed comanda. Să înlocuim cuvintele care și linie în myfile.txt cu Aceasta și, respectiv, versetul.
Rețineți cum se poate face acest lucru folosind un obișnuit sed comanda de substituție urmată de un punct și virgulă și o a doua comandă de substituție:
# sed -i 's / that / this / gi; s / line / verse / gi 'myfile.txt.
Acest sfat este ilustrat în următoarea imagine:
Desigur, sed poate fi combinat cu alte instrumente pentru a crea comenzi mai puternice. De exemplu, să folosim exemplul din SFAT # 4 și extrageți adresa noastră IP din ieșirea din ruta ip
comanda.
Vom începe prin a tipări doar linia în care se află cuvântul src
este. Apoi vom converti mai multe spații într-unul singur. În cele din urmă, vom tăia 9 câmp (considerând un singur spațiu ca separator de câmp), care este adresa IP:
# ip route show | sed -n '/ src / p' | sed -e 's / * / / g' | tăiat -d '' -f9.
Imaginea de mai jos ilustrează fiecare pas al comenzii de mai sus:
În acest ghid am împărtășit 15 sfaturi și trucuri sed pentru a vă ajuta cu sarcinile zilnice 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?
Dacă da, nu ezitați să ne anunțați folosind formularul de comentarii de mai jos. Întrebările și comentariile sunt, de asemenea, binevenite - așteptăm cu nerăbdare să auzim de la dvs.!
Nu ratați:Stăpânirea comenzii „Awk” Linux cu sfaturi și trucuri