Tek kristalli çift küp örgü (Single crystal double Cubic Raw)
Indholdsfortegnelse:
Når du arbejder med tekstfiler, bliver du ofte nødt til at finde og udskifte strenge med tekst i en eller flere filer.
sed
er en tream ed itor. Det kan udføre grundlæggende tekstmanipulation på filer og inputstrømme såsom rørledninger. Med
sed
kan du søge, finde og erstatte, indsætte og slette ord og linjer. Det understøtter grundlæggende og udvidede regelmæssige udtryk, der giver dig mulighed for at matche komplekse mønstre.
, vil vi tale om, hvordan man finder og udskifter strenge med
sed
. Vi viser dig også, hvordan du udfører en rekursiv søgning og udskifter.
Find og udskift streng med
sed
Der er flere versioner af
sed
, med nogle funktionelle forskelle mellem dem. macOS bruger BSD-versionen, og de fleste Linux-distributioner leveres med GNU
sed
forudinstalleret som standard. Vi bruger GNU-versionen.
Den generelle form for søgning og udskiftning af tekst ved hjælp af
sed
har følgende form:
sed -i 's/SEARCH_REGEX/REPLACEMENT/g' INPUTFILE
-
-i
- Som standard skriversed
dens output til standardoutputet. Denne mulighed fortællersed
at redigere filer på plads. Hvis der leveres en udvidelse (ex -i.bak), oprettes en sikkerhedskopi af den originale fil.s
- Erstatningskommandoen, sandsynligvis den mest anvendte kommando i sed./ / /
- Afgrænsningstegn. Det kan være et hvilket som helst tegn, men normalt bruges skråstreg (/
) -tegnet.SEARCH_REGEX
- Normal streng eller et almindeligt udtryk at søge efter.REPLACEMENT
- Erstatningsstrengen.g
- Globalt erstatningsflag. Som standard læsersed
filen linje for linje og ændrer kun den første forekomst afSEARCH_REGEX
på en linje. Når der er udskiftet flag, udskiftes alle forekomster.INPUTFILE
- Navnet på den fil, du vil køre kommandoen på.
Det er en god praksis at placere citater omkring argumentet, så shell-metategnene ikke udvides.
Lad os se eksempler på, hvordan du bruger
sed
kommandoen til at søge og udskifte tekst i filer med nogle af dens mest almindeligt anvendte indstillinger og flag.
Til demonstrationsformål bruger 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 erstatningsflag erstatter
sed
alle forekomster af søgemønsteret:
sed -i 's/foo/linux/g' file.txt
123 Foo linux linux linux /bin/bash Ubuntu linuxbar 456
Som du måske har bemærket, udskiftes i det forrige eksempel også substring
foo
inde i
foobar
strengen. Hvis dette ikke er den ønskede opførsel, skal du bruge ordbegrænsningsudtrykket (
\b
) i begge ender af søgestrengen. Dette sikrer, at de delvise ord ikke stemmer overens.
sed -i 's/\bfoo\b/linux/g' file.txt
123 Foo linux linux linux /bin/bash Ubuntu foobar 456
Brug
I
flag for at gøre mønsteret match mellem store og små bogstaver. I eksemplet nedenfor bruger vi både
g
og
I
flagene:
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
Den lettere og meget mere læsbare mulighed er at bruge en anden afgrænsningskarakter. De fleste mennesker bruger den lodrette bjælke (
|
) eller kolon (:), men du kan bruge ethvert andet 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å bruge regelmæssige udtryk. For eksempel at søge i alle 3-cifrede numre og erstatte dem med det strengenummer, du vil bruge:
sed -i 's/\b\{3}\b/number/g' file.txt
number Foo foo foo foo /bin/bash demo foobar number
Et andet nyttigt træk ved sed er, at du kan bruge ampersand-tegnet
&
som svarer til det matchede mønster. Tegnet kan bruges flere gange.
Hvis du f.eks. Vil tilføje krøllede seler
{}
omkring hvert 3-cifrede nummer, skal du skrive:
sed -i 's/\b\{3}\b/{&}/g' file.txt
{123} Foo foo foo foo /bin/bash demo foobar {456}
Sidst men ikke mindst er det altid en god ide at lave en sikkerhedskopi, når du redigerer en fil med
sed
. For at gøre det skal du bare give en udvidelse til
-i
indstillingen. For eksempel at redigere
file.txt
og gemme den originale fil som
file.txt.bak
ville du bruge:
sed -i.bak 's/foo/linux/g' file.txt
ls
Rekursiv Find og udskift
Undertiden vil du rekursivt søge i mapper efter filer, der indeholder en streng, og erstatte strengen i alle filer. Dette kan gøres ved at bruge kommandoer som
find
eller
grep
til rekursivt at finde filer i biblioteket og rør filnavne til
sed
.
Den følgende kommando søger rekursivt efter filer i det aktuelle arbejdsmappe og videresender filnavne til
sed
.
find. -type f -exec sed -i 's/foo/bar/g' {} +
For at undgå problemer med filer, der indeholder plads i deres navne, skal du bruge indstillingen
-print0
, der fortæller
find
til at udskrive filnavnet, efterfulgt af et nulltegn og rør output til
sed
ved hjælp af
xargs -0
:
find. -type f -print0 | xargs -0 sed -i 's/foo/bar/g'
For at ekskludere et bibliotek skal du bruge indstillingen-
-not -path
. Hvis du f.eks. Udskifter en streng i din lokale git-repo for at ekskludere alle filer, der starter med prik (
.
), Skal du bruge:
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'
En anden mulighed er at bruge
grep
kommandoen til rekursivt at finde alle filer, der indeholder søgemønsteret, og derefter rør filnavne til
sed
:
grep -rlZ 'foo'. | xargs -0 sed -i.bak 's/foo/bar/g'
Konklusion
Selvom det kan virke kompliceret og kompliceret, er det i starten meget let at søge og udskifte tekst i filer med
sed
.
For at lære mere om
sed
kommandoer, option og flag kan du besøge GNU sed-manualen og Grymoire sed-tutorial. Hvis du har spørgsmål eller feedback, er du velkommen til at give en kommentar.
Find og Kør Robot til Windows, er et program, der faktisk bruges til hardcore tastaturbrugere. Programmet hjælper brugerne med hurtigt at finde vigtige filer eller dokumenter fra i en enkelt tastetryk.
Find og Kør Robot
Uønskede filer er filer, der forbliver på din computer, efter at en opgave er udført. Nogle gange skal Windows eller noget program oprette midlertidige filer, mens du laver nogle opgaver, og glemmer derefter at slette de midlertidige filer, den oprettede. Som tiden går, er din computer fuld af uønskede filer i form af midlertidige filer, logfiler, downloadede filer og uønskede / unødvendige registreringsdatabaser i Windows. Artiklen snakker om fjernelse af uønskede filer i Windows 10 ved hjælp a
Uønskede filer i Windows 10
Sådan bruges facebook finde wifi til at finde gratis hotspots
Her er en hurtig vejledning til den nye Facebook Find WiFi-funktion til at finde gratis hotspots. Tjek det ud!