Den sanne historien om Paris Hilton | Dette er Paris Hilton Offisiell dokumentar
Innholdsfortegnelse:
Ofte når du arbeider med tekstfiler må du finne og erstatte strengene med tekst i en eller flere filer.
sed
er en tream ed itor. Den kan utføre grunnleggende tekstmanipulering på filer og inngangsstrømmer som rørledninger. Med
sed
kan du søke, finne og erstatte, sette inn og slette ord og linjer. Den støtter grunnleggende og utvidede vanlige uttrykk som lar deg matche komplekse mønstre.
, skal vi snakke om hvordan du finner og erstatter strenger med
sed
. Vi vil også vise deg hvordan du utfører et rekursivt søk og erstatter.
Finn og erstatt streng med
sed
Det er flere versjoner av
sed
, med noen funksjonelle forskjeller mellom dem. macOS bruker BSD-versjonen og de fleste Linux-distribusjoner kommer med GNU
sed
forhåndsinstallert som standard. Vi bruker GNU-versjonen.
Den generelle formen for å søke og erstatte tekst ved å bruke
sed
har følgende form:
sed -i 's/SEARCH_REGEX/REPLACEMENT/g' INPUTFILE
-
-i
- Som standard skriversed
utdataene til standardutgangen. Dette alternativet bersed
å redigere filer på plass. Hvis det leveres en utvidelse (ex -i.bak), opprettes en sikkerhetskopi av den originale filen.s
- Erstatningskommandoen, sannsynligvis den mest brukte kommandoen i sed./ / /
- Avgrensende karakter. Det kan være et hvilket som helst tegn, men vanligvis brukes skråstrek (/
) -tegnet.SEARCH_REGEX
- Normal streng eller et vanlig uttrykk å søke etter.REPLACEMENT
- Erstatningsstrengen.g
- Globalt erstatningsflagg. Som standard lesersed
filen linje for linje og endrer bare den første forekomsten avSEARCH_REGEX
på en linje. Når erstatningsflagget leveres, vil alle forekomster erstattes.INPUTFILE
- Navnet på filen du vil kjøre kommandoen på.
Det er en god praksis å sette sitater rundt argumentet slik at skallmetategnene ikke utvides.
La oss se eksempler på hvordan du bruker
sed
kommandoen til å søke og erstatte tekst i filer med noen av de mest brukte alternativene og flaggene.
For demonstrasjonsformål bruker vi følgende fil:
file.txt
123 Foo foo foo foo /bin/bash Ubuntu foobar 456
sed -i 's/foo/linux/' file.txt
123 Foo linux foo linux /bin/bash Ubuntu foobar 456
Med det globale erstatningsflagget erstatter
sed
alle forekomster av søkemønsteret:
sed -i 's/foo/linux/g' file.txt
123 Foo linux linux linux /bin/bash Ubuntu linuxbar 456
Som du kanskje har lagt merke til, er også i forrige eksempel erstattet substring
foo
inni
foobar
strengen. Hvis dette ikke er ønsket oppførsel, kan du bruke ordgrenseuttrykket (
\b
) i begge ender av søkestrengen. Dette sikrer at delordene ikke samsvarer.
sed -i 's/\bfoo\b/linux/g' file.txt
123 Foo linux linux linux /bin/bash Ubuntu foobar 456
Bruk
I
flagget for å gjøre mønsteret samsvar med små bokstaver. I eksemplet nedenfor bruker vi både
g
og
I
flaggene:
sed -i 's/foo/linux/gI' file.txt
123 linux linux linux linux /bin/bash Ubuntu linuxbar 456
sed -i 's/\/bin\/bash/\/usr\/bin\/zsh/g' file.txt
Det enklere og mye mer leselige alternativet er å bruke et annet avgrensningskarakter. De fleste bruker den vertikale linjen (
|
) eller kolon (:), men du kan bruke et hvilket som helst annet tegn:
sed -i 's|/bin/bash|/usr/bin/zsh|g' file.txt
123 Foo foo foo foo /usr/bin/zsh Ubuntu foobar 456
Du kan også bruke vanlige uttrykk. For eksempel for å søke i alle 3-sifrede numre og erstatte dem med strengenummeret du vil bruke:
sed -i 's/\b\{3}\b/number/g' file.txt
number Foo foo foo foo /bin/bash demo foobar number
En annen nyttig egenskap ved sed er at du kan bruke ampersand-tegnet
&
som tilsvarer det matchede mønsteret. Tegnet kan brukes flere ganger.
Hvis du for eksempel vil legge til krøllete seler
{}
rundt hvert tresifrede nummer, skriver du inn:
sed -i 's/\b\{3}\b/{&}/g' file.txt
{123} Foo foo foo foo /bin/bash demo foobar {456}
Sist, men ikke minst, er det alltid en god idé å ta en sikkerhetskopi når du redigerer en fil med
sed
. For å gjøre det bare gi en utvidelse til
-i
alternativet. For å redigere
file.txt
og lagre originalfilen som
file.txt.bak
, vil du for eksempel bruke:
sed -i.bak 's/foo/linux/g' file.txt
ls
Rekursiv Finn og erstatt
Noen ganger vil du rekursivt søke i kataloger etter filer som inneholder en streng og erstatte strengen i alle filene. Dette kan gjøres ved å bruke kommandoer som
find
eller
grep
å rekursivt finne filer i katalogen og sende filnavnene til
sed
.
Følgende kommando vil rekursivt søke etter filer i den gjeldende arbeidskatalogen og overføre filnavnene til
sed
.
find. -type f -exec sed -i 's/foo/bar/g' {} +
For å unngå problemer med filer som inneholder plass i navnene, bruk alternativet
-print0
som forteller
find
å skrive ut filnavnet, etterfulgt av et
xargs -0
og rør utdataene til
sed
ved å bruke
xargs -0
:
find. -type f -print0 | xargs -0 sed -i 's/foo/bar/g'
For å ekskludere en katalog, bruk alternativet
-not -path
. Hvis du for eksempel bytter ut en streng i din lokale git repo for å ekskludere alle filer som begynner med prikk (
.
), Bruk:
find. -type f -not -path '*/\.*' -print0 | xargs -0 sed -i 's/foo/bar/g'
find. -type f -name "*.md" -print0 | xargs -0 sed -i 's/foo/bar/g'
Et annet alternativ er å bruke
grep
kommandoen til å rekursivt finne alle filer som inneholder søksmønsteret, og deretter rør filnavnene til
sed
:
grep -rlZ 'foo'. | xargs -0 sed -i.bak 's/foo/bar/g'
Konklusjon
Selv om det kan virke komplisert og sammensatt, er det i begynnelsen veldig enkelt å søke og erstatte tekst i filer med
sed
.
For å lære mer om
sed
kommandoer, alternativ og flagg, besøk GNU sed manual og Grymoire sed tutorial. Hvis du har spørsmål eller tilbakemeldinger, kan du gjerne legge igjen en kommentar.
Dashboard-siden, tilgjengelig på google.com/dashboard, gir deg oversikt over kalendere eller dokumenter du deler, chatten din historie og nettsteder du har autorisert til å få tilgang til Picasa-bildene dine eller Gmail-kontakter (for eksempel et sosialt nettverk som kan bruke kontaktlisten din til å hjelpe deg med å finne andre brukere, på Facebook). Du finner også en liste over søkeforespørsler du har utført mens du er logget på Google. Hvis du bruker Google-verktøylinjen og har aktivert nettl
En ren søkeskifer
Over tid kan det hende at Windows 8 Start-skjermen kan ende opp med å vise mange fliser, noe som gjør det ser rotete ut og vanskelig å finne program snarveier. Det er ingen måte å vise enda mindre størrelse på flisene. Men Windows 8 tilbyr en enkel måte å gruppere disse programgenveiene på, slik at det blir mye lettere å finne dem. Hvis du faktisk har mange fliser på startskjermbildet, vil gruppering av fliser være et spørsmål om god husholdning til.
Gruppefliser på Windows 8 Startskjerm
Det finnes forskjellige måter å dele filer mellom PC og mobil. For eksempel kan du bruke Bluetooth, WiFi File Transfer apps, datakabel, etc. for å overføre dokument, video, lyd og andre filer. Men du vil legge merke til at disse metodene bare fungerer hvis din PC og mobil er foran deg. Hvis din PC er hjemme og mobilen din er på kontoret, kan du ikke be noen om å sende noen filer fra din PC til mobilen din. Åpenbart kan du bruke skylagring for å dele filer, men det krever innloggingsinformasjon.
PushBullet