I denne guiden vil vi vise frem å erstatte newlines med plass ved hjelp av sed.
Bruker SED for å erstatte tekst
La oss først raskt se på å utføre grunnleggende funn og erstatte ved hjelp av SED. Den samme metoden vil bli brukt når du bytter ut newlines med mellomrom med noen ekstra alternativer. Kommandostrukturen er som følger:
$ sed -e 's ///'Ta en titt på følgende kommando:
$ ECHO "The Quick Brown Fox" | sed -e 's/hurtig/rask/g'Echo -kommandoen skriver ut strengen til stdout. Stdout -strømmen blir deretter ledet til sed. Vi har bedt SED om å erstatte enhver forekomst av Quick for å bli erstattet med Fast. Endelig skrives utgangen ut på skjermen.
Bytte ut newlines med plass
For demonstrasjon har jeg opprettet følgende tekstfiltest.txt med flere dummy innhold:
$ kattest.tekstSED -kommandoen godtar regelmessige uttrykk for å beskrive forskjellige mønstre. Utnytte denne funksjonen, vi skal beskrive Newline som \ n. La oss prøve å erstatte Newlines med Whitespace:
$ sed -e 's/\ n//g' test.tekstDet fungerte imidlertid ikke som forventet. For å oppnå dette målet, trenger vi noen flere alternativer. Ta en titt på følgende kommando:
$ sed -e ': a; n; $!ba; s/\ n//g 'test.tekstSED -kommandoen har flere seksjoner; Hver betegner en spesifikk oppgave:
SED -kommandoen sløyfer gjennom trinnene til den når den siste linjen, og erstatter alle \ n tegn med plass.
I stedet for denne komplekse kommandoen, kan vi forenkle ting ved å bruke -z -flagget som spesifiserer SED for å jobbe med null -separerte poster. Kommandoen vil se slik ut:
$ sed -z -e 's/\ n//g' test.tekstAlternative metoder
Mens SED kan gjøre oppgaven helt fint, er det noen alternative verktøy. I denne delen vil vi kort undersøke et par av dem.
For følgende eksempel kan vi bruke TR -kommandoen til å erstatte Newline med Whitespace på en enkel måte:
$ tr '\ n "< test.txtVi kan også bruke Perl til å gjøre jobben. Følgende syntaks ligner også på det vi brukte med SED (men forenklet):
$ perl -p -e 's/\ n//' test.tekstEn annen måte å erstatte newlines med Whitespace er å bruke Paste -kommandoen. Merk at det bare kan fjerne ett tegn:
$ pasta -s -d "test.tekstI likhet med SED kommer Linux med et annet verktøy awk. I likhet med SED kan den også utføre noen avanserte erstatninger på inngangen. For vårt formål, bruk følgende AWK -kommando:
$ awk 1 ors = "test.tekstKonklusjon
Denne guiden utforsket hvordan vi kan erstatte Newline med plass ved hjelp av SED. Det ble oppnådd på to forskjellige måter. Denne guiden inneholder også andre relevante verktøy som vi kan bruke til å erstatte Newline med Whitespace.
I stedet for å bruke komplekse kommandoer som er vanskelig å huske, bruker vi bash -skript for å utføre mange ting i Linux. Selv om det kommer på bekostning av noen ytelser, er fleksibiliteten og brukervennligheten verdt det. Lær mer om bashskripting for nybegynnere.