LFCS: Com utilitzar GNU sed Command per crear, editar i manipular fitxers a Linux - Part 1


La Fundació Linux va anunciar la certificació LFCS (Linux Foundation Certified Sysadmin), un nou programa que té com a objectiu ajudar persones de tot el món a obtenir la certificació en tasques bàsiques i intermèdies d'administració de sistemes per a sistemes Linux. Això inclou el suport de sistemes i serveis en funcionament, juntament amb la resolució de problemes i l'anàlisi de primera mà i la presa de decisions intel·ligents per escalar els problemes als equips d'enginyeria.

Si us plau, mireu el següent vídeo que demostra el programa de certificació de la Fundació Linux.

La sèrie es titularà Preparació per a les parts 1 a 10 de l'LFCS (Administrador de sistema certificat de la Fundació Linux) i tractarà els temes següents per a Ubuntu, CentOS i openSUSE:

Aquesta publicació és la part 1 d'una sèrie de 20 tutorials, que tractaran els dominis i les competències necessàries que es requereixen per a l'examen de certificació LFCS. Dit això, engegueu el vostre terminal i comencem.

Processament de fluxos de text a Linux

Linux tracta l'entrada i la sortida dels programes com a fluxos (o seqüències) de caràcters. Per començar a entendre la redirecció i les canonades, primer hem d'entendre els tres tipus més importants de fluxos d'E/S (entrada i sortida), que de fet són fitxers especials (per convenció a UNIX i Linux, fluxos de dades i perifèrics, o fitxers de dispositius). també es tracten com a fitxers ordinaris).

La diferència entre > (operador de redirecció) i | (operador pipeline) és que mentre que el primer connecta una ordre amb un fitxer, el segon connecta la sortida d'una ordre amb una altra. comandament.

# command > file
# command1 | command2

Atès que l'operador de redirecció crea o sobreescriu fitxers en silenci, hem d'utilitzar-lo amb extrema precaució i no confondre-ho mai amb una canalització. Un dels avantatges de les canonades als sistemes Linux i UNIX és que no hi ha cap fitxer intermedi implicat amb una canalització: l'extensió stdout de la primera ordre no s'escriu en un fitxer i després la llegeix la segona.

Per als següents exercicis pràctics utilitzarem el poema \Un nen feliç (autor anònim).

El nom sed és l'abreviatura d'editor de fluxos. Per a aquells que no estiguin familiaritzats amb el terme, s'utilitza un editor de flux per realitzar transformacions bàsiques de text en un flux d'entrada (un fitxer o entrada d'una canalització).

L'ús més bàsic (i popular) de sed és la substitució de caràcters. Començarem canviant cada aparició de la y en minúscula a Y MAJÚSCULA i redirigeix la sortida a ahappychild2.txt. El senyalador g indica que sed hauria de realitzar la substitució de totes les instàncies de terme a cada línia del fitxer. Si s'omet aquesta marca, sed substituirà només la primera ocurrència del terme a cada línia.

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

Si voleu cercar o substituir un caràcter especial (com ara /, \, &), heu d'escapar-lo, en el terme o cadenes de substitució, amb una barra inclinada cap enrere.

Per exemple, substituirem la paraula i per un ampersand. Al mateix temps, substituirem la paraula I per Vostè quan es trobi la primera al començament d'una línia.

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

A l'ordre anterior, un ^ (signe d'accent) és una expressió regular coneguda que s'utilitza per representar el començament d'una línia.

Com podeu veure, podem combinar dues o més ordres de substitució (i utilitzar expressions regulars al seu interior) separant-les amb un punt i coma i tancant el conjunt entre cometes simples.

Un altre ús de sed és mostrar (o suprimir) una part escollida d'un fitxer. A l'exemple següent, mostrarem les 5 primeres línies de /var/log/messages a partir del 8 de juny.

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

Tingueu en compte que, per defecte, sed imprimeix totes les línies. Podem anul·lar aquest comportament amb l'opció -n i després dir-li a sed que imprimeixi (indicat per p) només la part del fitxer (o la canonada) que coincideixi amb el patró. (8 de juny al principi de línia en el primer cas i línies 1 a 5 inclusivament en el segon cas).

Finalment, pot ser útil mentre inspeccioneu scripts o fitxers de configuració per inspeccionar el propi codi i deixar de banda comentaris. El següent sed d'una línia suprimeix (d) les línies en blanc o les que comencen per # (el caràcter | indica un OR booleà entre les dues línies normals). expressions).

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

L'ordre uniq ens permet informar o eliminar línies duplicades d'un fitxer, escrivint a stdout per defecte. Hem de tenir en compte que uniq no detecta línies repetides tret que siguin adjacents. Per tant, uniq s'utilitza habitualment juntament amb una ordenació anterior (que s'utilitza per ordenar línies de fitxers de text). Per defecte, ordena pren el primer camp (separat per espais) com a camp clau. Per especificar un camp clau diferent, hem d'utilitzar l'opció -k.

L'ordre du –sch /path/to/directory/* retorna l'ús d'espai en disc per subdirectoris i fitxers dins del directori especificat en format llegible per humans (també mostra un total per directori) i no ordena la sortida per mida, però per subdirectori i nom de fitxer. Podem utilitzar la següent comanda per ordenar per mida.

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

Podeu comptar el nombre d'esdeveniments d'un registre per data dient-li a uniq que faci la comparació utilitzant els 6 primers caràcters (-w 6) de cada línia (on s'especifica la data) i posant el prefix a cadascun. línia de sortida pel nombre d'ocurrències (-c) amb l'ordre següent.

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

Finalment, podeu combinar sort i uniq (com solen ser). Considereu el fitxer següent amb una llista de donants, data de donació i quantitat. Suposem que volem saber quants donants únics hi ha. Utilitzarem l'ordre següent per tallar el primer camp (els camps estan delimitats per dos punts), ordenar per nom i eliminar les línies duplicades.

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

Llegiu també: 13 exemples d'ordres cat.

grep cerca en fitxers de text o (sortida d'ordres) l'ocurrència d'una expressió regular especificada i genera qualsevol línia que contingui una coincidència amb la sortida estàndard.

Mostra la informació de /etc/passwd per a l'usuari gacanepa, ignorant majúscules i minúscules.

# grep -i gacanepa /etc/passwd

Mostra tot el contingut de /etc el nom dels quals comença per rc seguit de qualsevol número.

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

Llegiu també: 12 exemples d'ordres grep.

L'ordre tr es pot utilitzar per traduir (canviar) o eliminar caràcters de stdin, i escriure el resultat a stdout.

Canvieu totes les minúscules a majúscules al fitxer sortuniq.txt.

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

Premeu el delimitador a la sortida de ls –l només a un espai.

# ls -l | tr -s ' '

L'ordre tallar extreu parts de les línies d'entrada (de stdin o fitxers) i mostra el resultat a la sortida estàndard, en funció del nombre de bytes (opció -b), caràcters (< b>-c), o camps (-f). En aquest últim cas (basat en camps), el separador de camps per defecte és una pestanya, però es pot especificar un delimitador diferent mitjançant l'opció -d.

Extreu els comptes d'usuari i els intèrprets d'ordres predeterminats assignats de /etc/passwd (l'opció –d ens permet especificar el delimitador de camps i el –f L'interruptor indica quins camps s'extreuran.

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

En resum, crearem un flux de text format pel primer i el tercer fitxer no en blanc de la sortida de l'ordre última. Utilitzarem grep com a primer filtre per comprovar si hi ha sessions de l'usuari gacanepa i, a continuació, estrènyer els delimitadors a un sol espai (tr -s ' ' ). A continuació, extreurem el primer i el tercer camps amb tallar i, finalment, ordenarem segons el segon camp (adreces IP en aquest cas) que es mostri únic.

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

L'ordre anterior mostra com es poden combinar diverses ordres i canonades per obtenir dades filtrades segons els nostres desitjos. No dubteu a executar-lo també per parts, per ajudar-vos a veure la sortida que es canalitza d'una ordre a la següent (això pot ser una gran experiència d'aprenentatge, per cert!).

Resum

Tot i que aquest exemple (juntament amb la resta d'exemples del tutorial actual) pot no semblar molt útil a primera vista, són un bon punt de partida per començar a experimentar amb ordres que s'utilitzen per crear, editar i manipular fitxers des del Linux. línia d'ordres. No dubteu a deixar les vostres preguntes i comentaris a continuació: seran molt apreciats!

  1. Sobre l'LFCS
  2. Per què obtenir una certificació de la Fundació Linux?
  3. Registreu-vos a l'examen LFCS