Zoeken op website

LFCS #1: Hoe je de 'sed'-opdracht gebruikt voor bestandsmanipulatie in Linux


De Linux Foundation heeft de LFCS-certificering (Linux Foundation Certified Sysadmin) aangekondigd, een nieuw programma dat tot doel heeft individuen over de hele wereld te helpen zich te certificeren in basis- tot middelmatige systeembeheertaken voor Linux-systemen.

Dit omvat het ondersteunen van actieve systemen en services, samen met probleemoplossing en analyse uit de eerste hand, en slimme besluitvorming om problemen naar technische teams te escaleren.

Vanaf de laatste herziening op 11 augustus 2023 hebben we nauwgezet rekening gehouden met de domeinen en competenties, in lijn met de ingangsdatum van 11 mei 2023, zoals officieel verklaard door de Linux-stichting.

De serie krijgt de titel Voorbereiding op de LFCS (Linux Foundation Certified Sysadmin) delen 1 tot en met 33 en behandelt de volgende onderwerpen:

Part 1

Het commando ‘Sed’ gebruiken om bestanden te manipuleren in Linux

Part 2

Hoe Vi/Vim onder Linux te installeren en te gebruiken

Part 3

Bestanden en directoires comprimeren en bestanden zoeken in Linux

Part 4

Partitioneren van opslagapparaten, formatteren van bestandssystemen en configureren van swappartitie

Part 5

Mount/Unmount lokale en netwerkbestandssystemen (Samba en NFS) in Linux

Part 6

Partities samenstellen als RAID-apparaten – Systeemback-ups maken en beheren

Part 7

Systeemopstartproces en -services beheren (SysVinit, Systemd en Upstart

Part 8

Hoe u gebruikers en groepen, bestandsrechten en Sudo-toegang beheert

Part 9

Linux-pakketbeheer met Yum, RPM, Apt, Dpkg, Aptitude en Zypper

Part 10

Leren van basisshellscripts en probleemoplossing voor bestandssystemen

Part 11

LVM beheren en creëren met de opdrachten vgcreate, lvcreate en lvextend

Part 12

Hoe Linux te verkennen met geïnstalleerde Help-documentatie en -hulpmiddelen

Part 13

Grand Unified Bootloader (GRUB) configureren en problemen oplossen

Part 14

Bewaak het resourcegebruik van Linux-processen en stel proceslimieten per gebruiker in

Part 15

Kernel Runtime-parameters instellen of wijzigen in Linux-systemen

Part 16

Implementatie van verplichte toegangscontrole met SELinux of AppArmor in Linux

Part 17

Toegangscontrolelijsten (ACL's) en schijfquota instellen voor gebruikers en groepen

Part 18

Netwerkservices installeren en automatisch opstarten bij opstarten configureren

Part 19

Een ultieme handleiding voor het instellen van een FTP-server om anonieme aanmeldingen toe te staan

Part 20

Stel een Basic Recursive Caching DNS-server in en configureer zones voor domein

Part 21

Hoe u de MariaDB-databaseserver installeert, beveiligt en de prestaties afstemt

Part 22

Hoe u NFS Server installeert en configureert voor het delen van bestandssystemen

Part 23

Apache instellen met op naam gebaseerde virtuele hosting met SSL-certificaat

Part 24

Hoe u een Iptables-firewall instelt om externe toegang tot services in Linux mogelijk te maken

Part 25

Hoe u van een Linux een router kunt maken die verkeer statisch en dynamisch afhandelt

Part 26

Hoe u gecodeerde bestandssystemen kunt instellen en uitwisselen met behulp van de Cryptsetup Tool

Part 27

Systeemgebruik en -storingen controleren en problemen met Linux-servers oplossen

Part 28

Hoe u een netwerkrepository instelt om pakketten te installeren of bij te werken

Part 29

Netwerkprestaties, beveiliging en probleemoplossing controleren

Part 30

Hoe u virtuele machines en containers installeert en beheert

Part 31

Leer de basisprincipes van Git om projecten efficiënt te beheren

Part 32

Een beginnershandleiding voor het configureren van IPv4- en IPv6-adressen in Linux

Part 33

Een beginnershandleiding voor het creëren van netwerkbinding en -bridging in Ubuntu

Dit bericht is deel 1 van een 33-tutorialserie, waarin de noodzakelijke domeinen en competenties worden behandeld die vereist zijn voor het LFCS-certificeringsexamen. Dat gezegd hebbende, start uw terminal op en laten we beginnen.

Tekststromen verwerken in Linux

Linux behandelt de invoer naar en de uitvoer van programma's als stromen (of reeksen) tekens. Om omleiding en leidingen te kunnen begrijpen, moeten we eerst de drie belangrijkste soorten I/O-stromen (Input en Output) begrijpen, die in feite speciale bestanden zijn (volgens afspraak in UNIX en Linux, datastromen en randapparatuur, of apparaatbestanden). worden ook behandeld als gewone bestanden).

Het verschil tussen > (omleidingsoperator) en | (pijplijnoperator) is dat terwijl de eerste een commando met een bestand verbindt, de laatste de uitvoer van een commando met een ander commando verbindt. commando.

command > file
command1 | command2

Omdat de omleidingsoperator in stilte bestanden aanmaakt of overschrijft, moeten we deze uiterst voorzichtig gebruiken en nooit verwarren met een pijplijn.

Een voordeel van pipelines op Linux- en UNIX-systemen is dat er geen tussenbestand bij een pipe betrokken is: de stdout van het eerste commando wordt niet naar een bestand geschreven en vervolgens door het tweede commando gelezen.

Voor de volgende oefenoefeningen gebruiken we het gedicht “Een gelukkig kind ” (anonieme auteur).

Met behulp van sed-commando

De naam sed is een afkorting voor stream-editor. Voor degenen die niet bekend zijn met de term: een streameditor wordt gebruikt om basisteksttransformaties uit te voeren op een invoerstroom (een bestand of invoer uit een pijplijn).

Wijzig kleine letters in hoofdletters in bestand

Het meest basale (en populaire) gebruik van sed is het vervangen van karakters. We beginnen met het veranderen van elke keer dat de kleine letter y voorkomt in HOOFDLETTERS Y en sturen de uitvoer om naar ahappychild2.txt.

De vlag g geeft aan dat sed de vervanging moet uitvoeren voor alle exemplaren van de term op elke regel van het bestand. Als deze vlag wordt weggelaten, vervangt sed alleen de eerste keer dat de term op elke regel voorkomt.

Sed basissyntaxis:
sed ‘s/term/replacement/flag’ file
Ons voorbeeld:
sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt

Zoek en vervang Word in bestand

Als u een speciaal teken wilt zoeken of vervangen (zoals /, \, &), moet u dit in de term escapen of vervangende snaren, met een achterwaartse schuine streep.

We vervangen bijvoorbeeld het woord en door een ampersand. Tegelijkertijd zullen we het woord I vervangen door Jij wanneer het eerste woord aan het begin van een regel wordt gevonden.

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

In het bovenstaande commando is een ^ (caret-teken) een bekende reguliere expressie die wordt gebruikt om het begin van een regel weer te geven.

Zoals u kunt zien, kunnen we twee of meer vervangingsopdrachten combineren (en daarin reguliere expressies gebruiken) door ze te scheiden met een puntkomma en de set tussen enkele aanhalingstekens te plaatsen.

Druk geselecteerde regels af vanuit een bestand

Een ander gebruik van sed is het tonen (of verwijderen) van een gekozen deel van een bestand. In het volgende voorbeeld geven we de eerste vijf regels van /var/log/messages van 8 juni weer.

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

Merk op dat sed standaard elke regel afdrukt. We kunnen dit gedrag overschrijven met de optie -n en vervolgens aan sed vertellen dat hij alleen het deel van het bestand (of de pipe) moet afdrukken (aangegeven door p) dat overeenkomt met het patroon (8 juni aan het begin van de regel in het eerste geval en regel 1 tot en met 5 in het tweede geval).

Ten slotte kan het handig zijn om bij het inspecteren van scripts of configuratiebestanden de code zelf te inspecteren en commentaar achterwege te laten. De volgende sed-oneliner verwijdert (d) lege regels of regels die beginnen met # (het teken | geeft een booleaanse OR< aan tussen de twee reguliere expressies).

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

uniq-opdracht

Met de opdracht uniq kunnen we dubbele regels in een bestand rapporteren of verwijderen, waarbij standaard naar stdout wordt geschreven. We moeten er rekening mee houden dat uniq herhaalde lijnen niet detecteert, tenzij ze aangrenzend zijn.

Daarom wordt uniq vaak gebruikt samen met een voorafgaande sort (die wordt gebruikt om regels tekstbestanden te sorteren). Standaard neemt sort het eerste veld (gescheiden door spaties) als sleutelveld. Om een ander sleutelveld op te geven, moeten we de optie -k gebruiken.

Voorbeelden van Uniq-opdrachten

De opdracht du -sch /path/to/directory/* retourneert het schijfruimtegebruik per submappen en bestanden binnen de opgegeven map in voor mensen leesbare indeling (toont ook een totaal per map), en geeft niet sorteer de uitvoer op grootte, maar op submap en bestandsnaam.

We kunnen de volgende opdracht gebruiken om op grootte te sorteren.

du -sch /var/* | sort –h

Je kunt het aantal gebeurtenissen in een logboek op datum tellen door uniq de opdracht te geven de vergelijking uit te voeren met de eerste zes tekens (-w 6) van elke regel (waar de datum is opgegeven), en elke uitvoerregel vooraf laten gaan door het aantal exemplaren (-c) met de volgende opdracht.

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

Ten slotte kunt u sort en uniq combineren (zoals gewoonlijk). Beschouw het volgende bestand met een lijst van donateurs, donatiedatum en bedrag. Stel dat we willen weten hoeveel unieke donoren er zijn.

We zullen het volgende cat-commando gebruiken om het eerste veld te knippen (velden worden gescheiden door een dubbele punt), op naam te sorteren en dubbele regels te verwijderen.

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

grep-opdracht

Het grep-commando doorzoekt tekstbestanden of (opdrachtuitvoer) op het voorkomen van een gespecificeerde reguliere expressie en voert elke regel uit die een overeenkomst bevat met de standaarduitvoer.

Voorbeelden van Grep-opdrachten

Geef de informatie uit /etc/passwd weer voor gebruiker gacanepa, waarbij hoofdletters en kleine letters worden genegeerd.

grep -i gacanepa /etc/passwd

Toon alle inhoud van /etc waarvan de naam begint met rc gevolgd door een enkel nummer.

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

tr-opdrachtgebruik

Het tr-commando kan worden gebruikt om tekens uit stdin te vertalen (wijzigen) of te verwijderen, en het resultaat naar stdout te schrijven.

Wijzig alle kleine letters in hoofdletters in het sortuniq.txt-bestand.

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

Knijp het scheidingsteken in de uitvoer van ls –l samen tot slechts één spatie.

ls -l | tr -s ' '

Verminder het commandogebruik

Het cut-commando extraheert gedeelten van invoerregels (uit stdin of bestanden) en geeft het resultaat weer bij standaarduitvoer, gebaseerd op het aantal bytes (-b optie), tekens (-c), of velden (-f).

In dit laatste geval (gebaseerd op velden) is het standaardveldscheidingsteken een tab, maar er kan een ander scheidingsteken worden opgegeven door de optie -d te gebruiken.

Voorbeelden van opdrachten knippen

Extraheer de gebruikersaccounts en de standaardshells die eraan zijn toegewezen uit /etc/passwd (met de optie –d kunnen we het veldscheidingsteken en de –f specificeren schakelaar geeft aan welke veld(en) zullen worden geëxtraheerd.

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

Samenvattend zullen we een tekststroom maken die bestaat uit het eerste en derde niet-lege bestand van de uitvoer van het laatste commando. We gebruiken grep als eerste filter om te controleren op sessies van gebruiker gacanepa en knijpen vervolgens scheidingstekens in slechts één spatie (tr -s ' ' ).

Vervolgens extraheren we het eerste en derde veld met cut, en sorteren we uiteindelijk op het tweede veld (IP-adressen in dit geval) dat uniek is.

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

Het bovenstaande commando laat zien hoe meerdere commando's en pijpen kunnen worden gecombineerd om gefilterde gegevens te verkrijgen volgens onze wensen. Voel je vrij om het ook in delen uit te voeren, zodat je de uitvoer kunt zien die van het ene commando naar het volgende wordt gepijplijnd (dit kan trouwens een geweldige leerervaring zijn!).

Samenvatting

Hoewel dit voorbeeld (samen met de rest van de voorbeelden in de huidige tutorial) op het eerste gezicht misschien niet erg nuttig lijkt, zijn ze een mooi startpunt om te beginnen experimenteren met opdrachten die worden gebruikt om bestanden van de Linux-computer te maken, te bewerken en te manipuleren. opdrachtregel.

Laat gerust uw vragen en opmerkingen hieronder achter; ze worden zeer op prijs gesteld!

Het LFCS eBook is nu te koop. Bestel vandaag nog uw exemplaar en begin uw reis om een gecertificeerde Linux-systeembeheerder te worden!

Product Name Price Buy
The Linux Foundation’s LFCS Certification Preparation Guide $19.99 [Buy Now]

Als laatste, maar daarom niet minder belangrijk, kunt u overwegen om uw examenvoucher te kopen via de volgende links. Zo verdient u een kleine commissie, waarmee we dit boek up-to-date kunnen houden.