Redigering av filer på stedet med CLI-enlinjerskommandoer

Fish Shell:
Redigering av filer på stedet med CLI-enlinjerskommandoer

Hvordan:

Fish Shell, kjent for sine brukervennlige funksjoner og kraftfulle skriptingsmuligheter, tilbyr flere måter å redigere filer på stedet på. Men, i motsetning til noen andre shells, har Fish ikke en innebygd mekanisme for redigering på stedet (sed -i i Bash, for eksempel). Men frykt ikke, du kan fortsatt oppnå dette med litt kreativitet og litt hjelp fra eksterne verktøy som sed og awk.

Bruke sed for enkle erstatninger

For å erstatte alle forekomster av “hello” med “world” i file.txt, ville du bruke:

sed -i '' 's/hello/world/g' file.txt

Påføre flere sed-kommandoer

Hvis du trenger å utføre flere erstatninger, kan du kjede dem slik:

sed -i '' -e 's/fish/bass/g' -e 's/rainbow/trout/g' file.txt

Bruke awk for mer komplekse operasjoner

For operasjoner som er for komplekse for sed, kan awk være verktøyet du velger. Slik dobler du nummeret på hver linje:

awk '{print $1 * 2}' file.txt > temp && mv temp file.txt

Merk om feilhåndtering

Husk at når du bruker disse verktøyene fra Fish, er det avgjørende å fange opp feil og forstå deres meldinger. Bruk Fish sin robuste feilhåndtering for å gjøre skriptene dine mer pålitelige.

Dypdykk

Historisk sett har redigering av filer på stedet vært en grunnpilar i Unix og Linux-programmering, som tilbyr en effektiv måte å utføre raske redigeringer uten å manuelt åpne filer. Verktøy som sed og awk er ærverdige verktøy som har vært rundt siden de tidlige dagene av Unix og har blitt uunnværlige for tekstbehandlingsoppgaver.

Fish Shell, som er mer moderne og skryter av forbedringer i brukervennlighet og skripting, mangler innebygd redigering på stedet hovedsakelig på grunn av sin designtankegang fokusert på interaktivitet og brukervennlighet. Mangelen på en innfødt kommando for redigering på stedet i Fish understreker viktigheten av eksterne verktøyer i Unix-lignende økosystemer.

Alternativene for redigering på stedet i Fish inkluderer bruk av midlertidige filer eller å dra nytte av Perl eller Python enlinjere, som kan tilby mer fleksibilitet eller lesbarhet for komplekse oppgaver.

For eksempel ved bruk av Perl:

perl -pi -e 's/find/replace/g' file.txt

Eller Python:

python -c "import re, sys; [sys.stdout.write(re.sub('pattern', 'replacement', line)) for line in sys.stdin]" < file.txt > temp && mv temp file.txt

Når det gjelder implementering, når du utfører redigering på stedet, oppretter disse verktøyene vanligvis en midlertidig fil, skriver endringene der, og erstatter deretter den opprinnelige filen med den modifiserte versjonen. Denne tilnærmingen sikrer at filredigeringsprosessen ikke korrumperer eller mister data hvis det oppstår en feil under operasjonen.

Å forstå disse verktøyene og metodene gjør det mulig for Fish Shell-programmerere å effektivt inkorporere redigering på stedet i skriptene sine, og bygger bro mellom Fish sine brukervennlige funksjoner og den rå kraften til tradisjonelle Unix-tekstbehandlingsverktøy.