Hvordan fjerner jeg linjer fra en fil ved hjelp av SED -kommandoen

Hvordan fjerner jeg linjer fra en fil ved hjelp av SED -kommandoen
SED -kommandoen er kjent som en strømredaktør. SED -kommandoen brukes i Linux for å gjøre grunnleggende teksttransformasjon.

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.

  • Fjerne linjer med vanlige uttrykk.
  • Basert på filens posisjon, slett en bestemt linje.

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.