En av de mange viktige kommandoene til Linux er også SED -kommandoen som spiller en viktig rolle i filmanipulering. Det brukes til mange formål; Noen av de viktigste er som følger.
Fjern eller slett den aktuelle linjen som samsvarer med de gitte mønstrene.
Så hvis du tenker på å fjerne linjer fra en fil ved hjelp av SED -kommandoen, kan du lese artikkelen vår fra start til slutt. Vi vil gi deg en kort om metodene for å fjerne linjer
Hvordan fjerner jeg linjer fra en fil ved hjelp av SED -kommandoen?
Vi vil bruke SED -kommandoen uten -i i denne artikkelen fordi det er en demonstrasjonsartikkel. En lignende metode er alternativet "Dry Run", som viser alle verdier for filen uten å gjøre noen endringer.
Ved hjelp av SED -kommandoen kan vi fjerne linjene avhengig av miljøet ved å bruke -i.
For å vise SED -kommandoen oppretter vi en fil som heter Linuxhintos.tekst. For å gi bedre informasjon inkluderer vi disse linjenumrene i følgende innhold.
Fjerne linjer fra en fil basert på posisjon
Denne delen vil forklare ved å bruke SED -kommandoen for å fjerne linjer fra en fil 'Linuxhintos.txt 'basert på sin posisjon.
Åpne først filen ved hjelp av følgende kommando:
katt ~//
Utfør nå kommandoen nedenfor for å slette den første linjen:
sed 'nd' -filen
I kommandoen ovenfor:
N- “Nth” -linje i en fil
D- Sletting av filen
Så la oss utføre denne kommandoen til vårt eksempel for å slette den 10. linjen fra tekstfilen:
CD -dokumenter
sed '10d' linuxhintos.tekst
Fjern den siste linjen fra en fil
Hvis vi må fjerne den siste linjen fra filen, i stedet for 'n' i syntaksen som er brukt ovenfor, vil vi bruke '$.'Her representerer $ den siste linjen.
sed '$ d' fil
Etter dette vil filen vår endre seg til noe slikt.
Fjern den første linjen og siste linje sammen
Hvis vi vil fjerne de første og siste linjene, må vi kombinere de to ovennevnte kommandoene.
sed 'nd; $ d' filnavn
Med denne kommandoen blir både de første og siste linjene fjernet fra filen samtidig.
Som du kan se i bildet ovenfor, er den første og siste linjen fjernet fra tekstfilen.
Fjern en rekke linjer
SED -kommandoen kan fjerne linjene i et hvilket som helst område. For dette må vi bare legge inn 'minimum' og 'maksimale' linjetall.
I dette eksemplet vil vi fjerne linjene fra 4 til 7 tall.
sed '4,7d' fil
Etter å ha fjernet disse linjene, vil filen vår se slik ut.
Fjern flere linjer
SED kan også fjerne flere linjer i et sett. Som du ser, fjernet vi den tredje, sjette, åttende og siste linjene i dette eksemplet.
sed '3d; 6d; 8d; $ d' -fil
Når du bruker SED -kommandoen skrevet ovenfor, oppstår følgende endringer i filen vår 'Linuxhintos.tekst'.
Fjerne andre linjer enn den spesifiserte linjen eller spesifiserte rekke linjer
Gjennom SED -kommandoen fjerner vi disse linjene fra filene som ikke er definert i kommandoen, i.e., De andre linjene enn de som er beskrevet blir fjernet.
Fra denne filen vil vi fjerne de gjenværende linjene bortsett fra tallene 4 til 7.
Sed '4,7! d 'fil
Her borte, tegnet på "!”Representerer at vi ikke skal fjerne linjen til dette spesifikke nummeret fra filen.
! - brukes til å holde det spesifikke antallet linjer fra filen
Etter dette vil filen vår se slik ut:
Fjern de tomme eller tomme linjene
SED -kommandoen skrevet nedenfor fjerner tomme eller tomme linjer fra riktig fil.
sed '/^$/d' fil
Siden det ikke er noen blanke eller tomme linjer i filen vår, har det ikke skjedd noen endringer:
Fjern linjer fra filen basert på mønsteret
I den andre delen vil vi se at ved hjelp av SED -kommandoen, hvordan vi fjerner linjer med et lignende mønster.
Fjerning av linjer som inneholder et mønster
I eksemplet fjerner følgende kommando linjene som samsvarer med "systemet" -mønsteret fra filen 'Linuxhintos.tekst'.
sed '/system/d' fil
Så vi må fjerne de linjene som ikke har "tilgjengelige". Derfor vil vi utføre kommandoen nedenfor:
sed '/ikke tilgjengelig/d' linuxhintos.tekst
Fjerning av linjer som inneholder en eller flere strenger
Gjennom SED -kommandoen kan vi fjerne linjene som samsvarer med "ikke oppdatert" eller "ikke tilgjengelig" -mønster fra filen 'Linuxhintos.txt 'og den kommandoen er noe slikt:
sed '/ikke oppdatert \ | ikke tilgjengelig/d' linuxhintos.tekst
Fjerne linjer som starter med en spesifikk karakter
Vi kan fjerne alle linjer som starter med ethvert tegn gjennom SED -kommandoen. Vi har laget en ny fil som heter 'Linuxhintos.txt 'med følgende innhold:
Kommandoen nedenfor vil fjerne alle linjer som starter med 'A' -karakteren.
sed '/^a/d' fil
Vi vil fjerne slike linjer fra filen vår, som starter med 'A' og 'L'. Som vi vil bruke følgende kommando.
sed '/^[al]/d' fil
Ved hjelp av SED fjerner vi alle linjer som begynner med “A” og slutter med strengen “Linux”.
sed '/^(a).*(Linux)/D '-fil
Fjerne linjer som ender med et spesifisert tegn
Denne SED -kommandoen fjerner alle linjer som slutter med “M.”
sed '/m $/d' fil
Følgende SED -kommando vil fjerne linjer som slutter med både 'M' og 'X' -tegn.
sed '/[xm] $/d' fil
Linjene med tegn som slutter med 'M' og 'X' blir fjernet fra filen vår; Deretter vil filen vår se slik ut.
Fjerne alle linjer som starter med store bokstaver
Vi vil fjerne alle disse linjene fra filen ved å bruke følgende kommando: en store bokstaver.
sed '/^[a-z]/d' fil
Etter å ha brukt kommandoen ovenfor, vil alle linjene fra filen vår som startet med store bokstaver bli fjernet, og endringen i filen vår vil være slik.
Fjerne en matchende mønsterlinje med et spesifisert område
Ved hjelp av følgende kommando vil vi bare fjerne disse linjene fra noen definerte linjer med et spesifikt mønster.
Dette eksemplet fjerner bare linjer med Linux -mønstre fra filen mellom 1 til 6 linjer.
sed '1,6 /linux/d; fil
Etter å ha brukt kommandoen, vår fil 'SED - Demo -1.txt 'vil se ut som dette.
Vi vil slette den andre raden med følgende SED -kommando bare hvis den inneholder "OpenSUSE" -mønsteret.
sed '2 /openSuse/d;' fil
Den aktuelle kommandoen vil fjerne den andre linjen fra filen vår 'SED - Demo -1.txt 'ettersom det har et spesifikt mønster av “OpenSuse.”
Den aktuelle kommandoen vil fjerne den andre linjen fra filen vår 'SED - Demo -1.txt 'ettersom det har et spesifikt mønster av “OpenSuse.”
Vi kan også slette linjen som samsvarer med "systemet" -mønsteret og følgende linje i filen ved hjelp av SED -kommandoen.
sed '/system/n; d;' fil
Fjern linjene med spesifikke mønstre
Du kan fjerne alle linjer etter "centos" -mønsteret ved hjelp av SED -kommandoen.
sed '/centos/, $ d' fil
Fjerning av linjer som inneholder tall/sifre
Med SED -kommandoen skrevet nedenfor, kan vi fjerne alle linjene som inneholder 'siffer.'
sed '/[0-9]/d' fil
Ved å gjøre noen endringer i SED -kommandoen, vil vi fjerne alle linjene fra filen som bare starter med sifre.
sed '/^[0-9]/d' fil
Etter denne kommandoen vil alle linjene som starter med sifre, bli fjernet fra filen vår.
Igjen, ved å gjøre noen endringer i kommandoen, vil vi bare fjerne disse linjene fra filen som ender med et siffer.
sed '/[0-9] $/d' -fil
Fjerning av linjer som inneholder alfabetiske tegn fra en fil
Med SED -kommandoen vil vi slette alle linjer fra filen 'Linuxhintos.txt, 'som inneholder alle alfabetiske tegn.
sed '/[a-za-z]/d' fil
Konklusjon
Denne artikkelen viser flere eksempler på å fjerne linjer fra en fil ved hjelp av SED -kommandoen. Vi ser hvordan vi med hjelp av SED -kommandoen enkelt kan fjerne alle linjer fra filer. Hvis vi husker disse kommandoene, sparer vi mye tid mens vi reduserer.