Dele en streng på en skilletegn i Bash

Bash

Bryte ned strengmanipulasjon i Bash

Når du arbeider med shell-skript, er en vanlig oppgave å dele en streng basert på et skilletegn. Tenk for eksempel på en streng som inneholder e-postadresser atskilt med semikolon. Hvis du trenger å behandle hver e-post individuelt, er det viktig å forstå hvordan du deler denne strengen. Denne artikkelen vil guide deg gjennom ulike metoder for å oppnå dette i Bash.

Vi vil utforske løsninger som å bruke `tr`-kommandoen og manipulere Internal Field Separator (IFS). Mot slutten vil du være i stand til å håndtere strengdeling effektivt og tilbakestille IFS til standardverdien. La oss dykke inn og forenkle Bash-skriptoppgavene dine!

Kommando Beskrivelse
tr Oversetter eller sletter tegn. Brukes her for å erstatte semikolon med et linjeskifttegn for å dele strengen.
IFS Internal Field Separator, brukes til å dele strenger basert på et spesifikt skilletegn i Bash-skript.
read -r -a Leser en linje med inndata og deler den opp i en matrise. Alternativet -r forhindrer omvendt skråstrek fra å bli tolket som escape-tegn.
echo Skriver ut tekst til standardutdata. Brukes til å vise de delte strengelementene.
split En Perl-funksjon som deler en streng i en liste med strenger basert på et spesifisert skilletegn.
foreach En Perl-løkkestruktur som itererer over en liste med verdier.

Forstå teknikker for splitting av bash-strenger

Det første Bash-skriptet viser hvordan du deler en streng ved å bruke kommando. Her definerer vi en streng og bruk i forbindelse med tr for å oversette semikolonavgrensningen til et linjeskifttegn. Dette bryter strengen effektivt i individuelle linjer. De løkken itererer deretter over hver linje, og skriver ut adressene innenfor hakeparenteser. Denne metoden er enkel og utnytter de kraftige tekstbehandlingsmulighetene til Unix-kommandoer for å manipulere strenger.

En annen metode innebærer å justere . Ved midlertidig innstilling til et semikolon, kan vi dele strengen i en matrise. Vi lagrer originalen til OIFS før du endrer det, for å sikre at vi kan gjenopprette det senere. De kommandoen leser inngangsstrengen inn i en matrise kalt , dele den basert på den modifiserte . Etter bearbeiding, originalen IFS er gjenopprettet. Denne tilnærmingen gir en mer programmatisk måte å håndtere strengdeling i Bash, slik at vi kan bruke arrays for videre manipulering.

Bruke Bash til å dele strenger på en skilletegn

Bash Script

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Split string using 'tr' and iterate
mails=$(echo $IN | tr ";" "\n")
for addr in $mails; do
  echo "> [$addr]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

Dele en streng i Bash ved hjelp av IFS

Bash Script

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Save the original IFS
OIFS=$IFS
# Set IFS to semicolon
IFS=';'
# Split string into an array
read -r -a mails2 <<< "$IN"
# Restore the original IFS
IFS=$OIFS
# Iterate over the array
for x in "${mails2[@]}"; do
  echo "> [$x]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

Bruker Python for String Splitting

Python-skript

#!/usr/bin/env python3
# Input string
IN = "bla@some.com;john@home.com"
# Split string by semicolon
mails = IN.split(';')
# Iterate and print each element
for addr in mails:
    print(f"> [{addr}]")

# Output:
# > [bla@some.com]
# > [john@home.com]

Bruke Perl til å dele en streng

Perl-skript

#!/usr/bin/env perl
use strict;
use warnings;
# Input string
my $IN = "bla@some.com;john@home.com";
# Split string by semicolon
my @mails = split(';', $IN);
# Iterate and print each element
foreach my $addr (@mails) {
    print "> [$addr]\n";
}

# Output:
# > [bla@some.com]
# > [john@home.com]

Avanserte strengdelingsteknikker i Bash

En annen kraftig metode for å dele strenger i Bash innebærer å bruke kommando. er et allsidig kommandolinjeverktøy designet for mønsterskanning og prosessering. Det kan være spesielt nyttig for å dele strenger fordi det lar oss definere egendefinerte feltseparatorer. For eksempel kan vi bruke å dele en streng basert på semikolon-skilletegnet og skrive ut de enkelte komponentene. Denne metoden er svært fleksibel og kan håndtere mer komplekse strengmanipulasjonsoppgaver, noe som gjør den til et verdifullt verktøy i en Bash-programmerers verktøysett.

I tillegg har kommandoen kan brukes til å dele strenger basert på skilletegn. De kommandoen brukes vanligvis for å trekke ut seksjoner fra hver linje med inndata. Ved å spesifisere et skilletegn med og velge feltene med -f alternativet, kan vi effektivt dele og trekke ut deler av en streng. For eksempel ved å bruke vil trekke ut den første e-postadressen fra inndatastrengen. Disse avanserte metodene gir mer kontroll og presisjon for strengmanipulasjonsoppgaver i Bash.

  1. Hvordan deler jeg en streng på et skilletegn i Bash?
  2. Du kan bruke variabel eller kommandoer som , , og cut å dele strenger på et skilletegn.
  3. Hva er variabel i Bash?
  4. De (Internal Field Separator) er en spesiell variabel som definerer tegnet(e) som brukes til å dele inn tekst i ord eller tokens.
  5. Hvordan kan jeg tilbakestille variabel til standardverdien?
  6. Lagre originalen verdi før du endrer den, og gjenopprett den etter behandling: .
  7. Hva gjør kommando gjøre i strengdeling?
  8. De kommandoen oversetter eller sletter tegn. Den kan erstatte skilletegn med nye linjer for å dele en streng: .
  9. Kan jeg dele en streng i en matrise ved å bruke Bash?
  10. Ja, ved å endre variabel og bruker , kan du dele en streng i en matrise:
  11. Hva er kommando brukt til?
  12. er et kommandolinjeverktøy for mønsterskanning og prosessering. Den kan dele strenger ved å definere egendefinerte feltseparatorer.
  13. Hvordan fungerer kommandoarbeid?
  14. De kommando trekker ut deler fra hver linje med inndata. Den kan dele strenger ved å spesifisere et skilletegn og velge felt: .
  15. Hvorfor bruker nyttig ved strengdeling?
  16. Ved hjelp av lar deg definere egendefinerte skilletegn for å dele strenger, noe som gjør den allsidig for forskjellige inndataformater.
  17. Er det mulig å dele en streng med flere skilletegn i Bash?
  18. Ja, du kan bruke en kombinasjon av og å håndtere flere skilletegn.
  19. Kan jeg bruke for strengdeling i Bash?
  20. Samtidig som er primært en stream editor, den kan kombineres med andre kommandoer som å dele strenger indirekte.

Å mestre strengmanipulering i Bash kan forbedre skripteffektiviteten din betraktelig. Enten du bruker for enkle skilletegn eller mer avanserte verktøy som og , disse teknikkene er avgjørende for effektiv Bash-programmering. Husk å alltid gjenopprette originalen IFS for å unngå uventet oppførsel i skriptene dine. Med disse metodene kan du håndtere et bredt spekter av strengbehandlingsoppgaver i Bash-skriptene dine.