Splitte en streng på en afgrænser i Bash

Bash

Breaking Down String Manipulation i Bash

Når man arbejder med shell-scripts, er en almindelig opgave at opdele en streng baseret på en afgrænser. Overvej f.eks. en streng, der indeholder e-mail-adresser adskilt af semikolon. Hvis du har brug for at behandle hver e-mail individuelt, bliver det vigtigt at forstå, hvordan du opdeler denne streng. Denne artikel vil guide dig gennem forskellige metoder til at opnå dette i Bash.

Vi vil udforske løsninger såsom at bruge kommandoen `tr` og manipulere den interne feltseparator (IFS). Ved udgangen vil du være i stand til at håndtere strengopdeling effektivt og nulstille IFS til standardværdien. Lad os dykke ned og forenkle dine Bash-scriptopgaver!

Kommando Beskrivelse
tr Oversætter eller sletter tegn. Bruges her til at erstatte semikolon med et linjeskifttegn for at opdele strengen.
IFS Intern feltseparator, bruges til at opdele strenge baseret på en specifik afgrænser i Bash-scripts.
read -r -a Læser en inputlinje og opdeler den i et array. Indstillingen -r forhindrer omvendte skråstreg i at blive fortolket som escape-tegn.
echo Udskriver tekst til standardoutput. Bruges til at vise de opdelte strengelementer.
split En Perl-funktion, der opdeler en streng i en liste af strenge baseret på en specificeret afgrænsning.
foreach En Perl-løkkestruktur, der itererer over en liste med værdier.

Forståelse af Bash String Splitting Teknikker

Det første Bash-script demonstrerer, hvordan man opdeler en streng ved hjælp af kommando. Her definerer vi en streng og bruge i forbindelse med tr at oversætte semikolon-afgrænsningen til et linjeskifttegn. Dette bryder effektivt strengen i individuelle linjer. Det løkken itererer derefter over hver linje og udskriver adresserne inden for firkantede parenteser. Denne metode er ligetil og udnytter de kraftfulde tekstbehandlingsfunktioner i Unix-kommandoer til at manipulere strenge.

En anden metode involverer justering af . Ved midlertidig indstilling til et semikolon, kan vi opdele strengen i en matrix. Vi gemmer originalen til OIFS før vi ændrer det, så vi sikrer, at vi kan gendanne det senere. Det kommando læser inputstrengen ind i et array kaldet , opdele det baseret på den ændrede . Efter behandling, originalen IFS er gendannet. Denne tilgang giver en mere programmatisk måde at håndtere strengopdeling i Bash, hvilket giver os mulighed for at bruge arrays til yderligere manipulation.

Brug af Bash til at opdele strenge på en afgrænser

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]

Opdeling af en streng i Bash ved hjælp af 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]

Brug af Python til String Splitting

Python script

#!/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]

Brug af Perl til at opdele en streng

Perl Script

#!/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]

Avancerede strengspalteteknikker i Bash

En anden kraftfuld metode til at splitte strenge i Bash involverer at bruge kommando. er et alsidigt kommandolinjeværktøj designet til mønsterscanning og -behandling. Det kan være særligt nyttigt til at opdele strenge, fordi det giver os mulighed for at definere brugerdefinerede feltseparatorer. For eksempel kan vi bruge at opdele en streng baseret på semikolon-afgrænsningen og udskrive de enkelte komponenter. Denne metode er meget fleksibel og kan håndtere mere komplekse strengmanipulationsopgaver, hvilket gør den til et værdifuldt værktøj i en Bash-programmørs værktøjssæt.

Derudover kommando kan bruges til at opdele strenge baseret på afgrænsningstegn. Det kommando bruges typisk til at udtrække sektioner fra hver linje af inputdata. Ved at angive en afgrænsning med mulighed og vælge felterne med -f mulighed, kan vi effektivt opdele og udtrække dele af en streng. For eksempel ved at bruge ville udtrække den første e-mailadresse fra inputstrengen. Disse avancerede metoder giver mere kontrol og præcision til strengmanipulationsopgaver i Bash.

  1. Hvordan opdeler jeg en streng på et skilletegn i Bash?
  2. Du kan bruge variabel eller kommandoer som , , og cut at opdele strenge på en afgrænsning.
  3. Hvad er variabel i Bash?
  4. Det (Internal Field Separator) er en speciel variabel, der definerer det eller de tegn, der bruges til at opdele inputtekst i ord eller tokens.
  5. Hvordan kan jeg nulstille variabel til dens standardværdi?
  6. Gem originalen værdi, før du ændrer den, og gendan den efter behandling: .
  7. Hvad gør kommando gør i strengopdeling?
  8. Det kommando oversætter eller sletter tegn. Det kan erstatte skilletegn med nye linjer for at opdele en streng: .
  9. Kan jeg opdele en streng i et array ved hjælp af Bash?
  10. Ja, ved at ændre variabel og bruger , kan du opdele en streng i en matrix:
  11. Hvad er kommando brugt til?
  12. er et kommandolinjeværktøj til mønsterscanning og -behandling. Det kan opdele strenge ved at definere brugerdefinerede feltseparatorer.
  13. Hvordan virker kommando arbejde?
  14. Det kommando udtrækker sektioner fra hver linje af input. Det kan opdele strenge ved at angive et skilletegn og vælge felter: .
  15. Hvorfor bruger hjælpsom til strengspaltning?
  16. Ved brug af giver dig mulighed for at definere brugerdefinerede skilletegn til opdeling af strenge, hvilket gør det alsidigt til forskellige inputformater.
  17. Er det muligt at opdele en streng med flere skilletegn i Bash?
  18. Ja, du kan bruge en kombination af og at håndtere flere afgrænsninger.
  19. Kan jeg bruge til strengspaltning i Bash?
  20. Mens er primært en stream editor, den kan kombineres med andre kommandoer som f.eks at splitte strenge indirekte.

At mestre strengmanipulation i Bash kan forbedre din scripting-effektivitet markant. Uanset om du bruger til simple afgrænsninger eller mere avancerede værktøjer som f.eks og , disse teknikker er afgørende for effektiv Bash-programmering. Husk altid at gendanne originalen IFS for at undgå uventet adfærd i dine scripts. Med disse metoder kan du håndtere en bred vifte af strengbehandlingsopgaver i dine Bash-scripts.