Linux-utvecklare följer filosofin att skapa små program som gör en uppgift och gör det bra. Ta Linux-textbehandlingsverktyg som ett exempel, de är lätta och har modulär funktionalitet. Även om dessa textmanipuleringsverktyg skiljer sig åt i komplexitet och funktionalitet, kommer de väl till pass i en miljö där det grafiska användargränssnittet inte är tillgängligt.
Artikeln täcker de bästa Linux-verktygen för att läsa filer och använda reguljära uttryck för att utföra operationer på den valda texten. Den täcker också deras mest grundläggande funktionalitet och exempel för bättre förståelse.
1. grep
grep är ett Linux-textmanipuleringsverktyg som söker efter en sträng av tecken eller mönster som kallas reguljära uttryck i en fil eller text. grep-verktyget tillhör familjen av verktyg som inkluderar egrep, fgrep och grep, bland vilka fgrep är det snabbaste av alla, medan grep är det enklaste.
Den allmänna syntaxen för att använda grep är följande:
grep -options sträng filnamn
Till exempel för att söka efter ordet "root" i filen /etc/passwd:
grep root /etc/passwd
Några vanliga kommandoradsexempel för att komma igång är:
alternativ | Exempel | Beskrivning |
---|---|---|
-c | grep -c |
Räkna antalet rader där strängen finns |
-jag | grep -i |
Utför en skiftlägesokänslig sökning efter den angivna strängen |
-o | grep -o |
Skriver endast ut den matchade strängen |
-l | grep -l "passwd" | Skriver ut filnamn i den aktuella katalogen som matchar mönstret |
-n | grep -n |
Skriver ut radnumret längs raden som innehåller den angivna strängen |
sträng1|sträng2 | grep "string1|string2" fil | Hitta och skriv ut flera strängar från en fil |
På samma sätt kan du använda ^ metatecken med kommandot grep för att visa alla matchande strängar som börjar med vissa tecken.
Till exempel skickar följande kommando kommandot env som en indata till grep och visar variabler som börjar med "HO":
env | grep ^HO
Relaterad: Praktiska exempel på Linux Grep-kommandon
2. awk
awk är ett kraftfullt skriptspråk och ett kommandoradsverktyg för textmanipulering som kan utföra rad för rad skanningar och jämföra rader med mönster. Den grundläggande syntaxen för kommandot awk är en åtgärd som definieras mellan ett enstaka citattecken och klammerparenteser följt av filnamnet.
awk '{action}' filnamn
awk '{mönster; action}' filnamn
Verktyget söker igenom filen med hjälp av reguljära uttryck och utför den funktion som definieras i handlingsparametern. awk kör skriptet på varje rad om du inte anger ett mönster, som visas nedan:
awk '{print $1}' awk_examples.txt
...var $1 visar det första fältet i awk_examples.txt fil.
Följande kommando utför utskriftsfunktionen på det givna mönstret genom att ersätta det andra fältet "Värld"med"Alice," och visar hela raden ($0):
echo "Hello World" | awk '{$2="Alice"; skriv ut $0}'
Produktion:
Hej Alice
På samma sätt kan du använda funktionen skriv ut $0 från kommandot ovan för att emulera grep funktionalitet.
awk '/john/{print $0}' /etc/passwd
john: x: 1001:1001::/home/john:/bin/sh
3. sortera
sort är ett annat Linux-kommandoradsverktyg som hjälper dig att visa innehållet i den angivna textfilen i ett sorterat format. Till exempel kan du skicka utdata från kommandot awk som en indata till sorteringsverktyget enligt följande:
awk '{print $1}' awk_examples.txt | sortera > sort_text.txt
cat sort_text.txt
Produktion:
Relaterad: Hur man sorterar textfiler i Linux med hjälp av sortering
4. sed
sed eller stream editor tar indata som en ström av tecken och utför filtrering och textomvandlingar (ta bort, ersätt och ersätt) på den angivna texten.
Du kan använda det i ett skript och redigera filer icke-interaktivt. Därför är det mest grundläggande syftet med verktyget att ersätta sträng/tecken. Den allmänna syntaxen är:
sed 's/string/substitution/option'-fil
Skapa en fil med slumpmässiga meningar för att öva och förstå hur det här verktyget fungerar.
Låt oss ersätta förekomsten av ordet "två" på varje rad i filen med "2" använda -g flagga för global ersättning, enligt följande:
sed 's/two/2/g' sed_examples.txt > sed_examples2.txt
Använd på samma sätt -d flagga för att ta bort en specifik rad från filen:
sed '2d' sed_examples.txt
Du kan också ersätta strängen genom att ange ett radnummer (4 s/två/2/s) och endast skriva ut den ersatta raden enligt följande:
sed -n '4 s/två/2/p' sed_examples2.txt
De -n flaggan i kommandot ovan inaktiverar automatisk utskrift av ingångsströmmen till utgången. Du kan använda det här alternativet till din fördel för att ersätta grep-verktygsfunktionen med sed.
Du kan till exempel ändra kommandot ovan genom att bara inkludera ett regexmönster /two/p sådan att -s flaggan kommer endast att skriva ut raderna till standardutgångsströmmen.
sed -n '/två/p' sed_examples2.txt
Relaterad: Dessa 10 sed exempel kommer att göra dig till en Linux Power User
5. skära
Cut är ett annat kommandoradsverktyg som skär ut/extraherar delar av text från en rad eller fil. Den klipper ut texten baserat på ett angivet fält, tecken eller byteposition och skickar resultatet till standardutdata.
Verktyget tar in följande syntax:
skära fil
Använd -b alternativ för att klippa avsnitt eller innehåll med en specificerad byte eller ett intervall av byte:
cut -b 1 cut_examples.txt
Använd -c flagga för att extrahera text genom att ange positionerna för tecken:
cut -c 1,3,5 cut_examples.txt
Slutligen kan du också extrahera text genom att ange fält med -f alternativ och -d för mellanslag eller fältavgränsare:
cut -d " " -f 1 cut_examples.txt
Här är listan över intervall med exempel och beskrivningar som du kan använda med karaktären -c och byte -b alternativ:
Räckvidd | Exempel | Beskrivning |
---|---|---|
n- | cut -c 7- filnamn | Extrahera tecken från n: te heltal till slutet av raden |
n-m | cut -b 7-15 filnamn | Extraherar från heltal n-m för varje rad från indatafilen |
-m | cut -c -7 filnamn | Extraherar rader från m till slutet av raden |
Observera att du inte kan definiera intervallen för textextraktion genom att använda fältet -f alternativ.
Manipulera text med Linux-kommandon
Linux erbjuder många program och verktyg för att hantera och arbeta runt filer eller text. Att lära sig dem alla kanske inte krävs eftersom du enkelt kan fylla tomrummet med en annan när du väl har ett bra grepp om en, som att använda sed som grep eller awk som grep, men detta kan inte vara sant för alla verktyg.
Dessutom har Linux-kommandon en brant inlärningskurva, men när du väl utvecklar färdigheten kan de visa sig vara mycket användbara och effektiva i livet för alla Linux-användare, särskilt en systemadministratör.
Trött på den gamla och tråkiga terminalappen som kommer förinstallerad på Linux? Kolla in dessa åtta terminalappar som förbättrar ditt arbetsflöde.
Läs Nästa
- Linux
- Linux-kommandon
Rumaisa är frilansskribent på MUO. Hon har burit många hattar, från en matematiker till en informationssäkerhetsentusiast, och arbetar nu som SOC-analytiker. Hennes intressen inkluderar att läsa och skriva om ny teknik, Linux-distributioner och allt kring informationssäkerhet.
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera