Stringi poolitamine eraldusmärgil Bashis

Stringi poolitamine eraldusmärgil Bashis
Stringi poolitamine eraldusmärgil Bashis

Stringi manipuleerimise katkestamine Bashis

Shelliskriptidega töötamisel on tavaline ülesanne stringi eraldamine eraldaja alusel. Näiteks kaaluge stringi, mis sisaldab semikoolonitega eraldatud e-posti aadresse. Kui teil on vaja iga meili eraldi töödelda, on oluline mõista, kuidas seda stringi jagada. See artikkel juhendab teid erinevate meetodite abil selle saavutamiseks Bashis.

Uurime selliseid lahendusi nagu käsu tr kasutamine ja sisemise väljaeraldaja (IFS) manipuleerimine. Lõpuks saate stringide tükeldamisega tõhusalt hakkama ja lähtestada IFS-i vaikeväärtus. Sukeldume ja lihtsustame teie Bashi skriptimisülesandeid!

Käsk Kirjeldus
tr Tõlgib või kustutab tähemärke. Kasutatakse siin semikooloni asendamiseks reavahetuse märgiga, et stringi poolitada.
IFS Sisemine väljaeraldaja, mida kasutatakse Bashi skriptides kindla eraldaja alusel stringide jagamiseks.
read -r -a Loeb sisendrea ja jagab selle massiiviks. Valik -r takistab kaldkriipsude tõlgendamist paomärkidena.
echo Prindib teksti standardväljundisse. Kasutatakse jagatud stringielementide kuvamiseks.
split Perli funktsioon, mis jagab stringi määratud eraldaja alusel stringide loendiks.
foreach Perli ahela struktuur, mis kordab väärtuste loendit.

Bashi stringide poolitamise tehnikate mõistmine

Esimene Bashi skript näitab, kuidas stringi jagada, kasutades tr käsk. Siin määratleme stringi IN="bla@some.com;john@home.com" ja kasutada echo seoses tr semikooloni eraldaja tõlkimiseks reavahetuseks. See jagab stringi tõhusalt üksikuteks ridadeks. The for silmus itereerib seejärel üle iga rea, trükkides aadressid nurksulgudesse. See meetod on lihtne ja kasutab stringidega manipuleerimiseks Unixi käskude võimsaid tekstitöötlusvõimalusi.

Teine meetod hõlmab reguleerimist Internal Field Separator (IFS). Ajutiselt seadistades IFS semikoolonile, saame stringi massiiviks jagada. Salvestame originaali IFS juurde OIFS enne selle muutmist, et saaksime selle hiljem taastada. The read -r -a käsk loeb sisendstringi massiivi nimega mails2, jagades selle muudetud põhjal IFS. Pärast töötlemist originaal IFS on taastatud. See lähenemine annab programmilisema viisi stringide tükeldamise käsitlemiseks Bashis, võimaldades meil kasutada massiive edasiseks manipuleerimiseks.

Bashi kasutamine stringide eraldamiseks eraldajal

Bashi skript

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

Stringi tükeldamine Bashis IFS-i abil

Bashi skript

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

Pythoni kasutamine stringide poolitamiseks

Pythoni 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]

Perli kasutamine stringi jagamiseks

Perli 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]

Täiustatud stringide poolitamise tehnikad Bashis

Teine võimas meetod stringide jagamiseks Bashis hõlmab awk käsk. awk on mitmekülgne käsurea utiliit, mis on loodud mustrite skannimiseks ja töötlemiseks. See võib olla eriti kasulik stringide tükeldamisel, kuna see võimaldab meil määratleda kohandatud väljaeraldajaid. Näiteks saame kasutada awk -F";" '{print $1, $2}' stringi poolitamiseks semikooloni eraldaja põhjal ja üksikute komponentide printimiseks. See meetod on väga paindlik ja suudab toime tulla keerukamate stringidega manipuleerimise ülesannetega, muutes selle Bashi programmeerija tööriistakomplektis väärtuslikuks tööriistaks.

Lisaks on cut käsku saab kasutada stringide eraldamiseks eraldajate põhjal. The cut käsku kasutatakse tavaliselt igast sisendandmete reast lõikude eraldamiseks. Määrates eraldaja koos -d valikut ja valides väljad nupuga -f valikut, saame stringi osi tõhusalt poolitada ja eraldada. Näiteks kasutades echo $IN | cut -d';' -f1 eraldaks sisestusstringist esimese e-posti aadressi. Need täiustatud meetodid pakuvad Bashis stringidega manipuleerimise ülesannete jaoks suuremat kontrolli ja täpsust.

Levinud küsimused ja vastused stringide poolitamise kohta Bashis

  1. Kuidas ma saan Bashis eraldaja stringi poolitada?
  2. Võite kasutada IFS muutuja või käsud nagu tr, awk, ja cut eraldaja stringe poolitama.
  3. Mis on IFS muutuja Bashis?
  4. The IFS (Internal Field Separator) on spetsiaalne muutuja, mis määratleb märgi(d), mida kasutatakse sisendteksti jagamisel sõnadeks või märkideks.
  5. Kuidas ma saan lähtestada IFS muutuja vaikeväärtusele?
  6. Salvestage originaal IFS väärtus enne selle muutmist ja taastage see pärast töötlemist: OIFS=$IFS; IFS=';'; ... ; IFS=$OIFS.
  7. Mida teeb tr käsk teha stringi tükeldamisel?
  8. The tr käsk tõlgib või kustutab tähemärgid. See võib stringi poolitamiseks asendada eraldajad reavahetustega: echo $IN | tr ";" "\n".
  9. Kas ma saan Bashi abil stringi massiiviks jagada?
  10. Jah, muutes IFS muutuv ja kasutades read -r -a, saate stringi jagada massiiviks: read -r -a array <<< "$string".
  11. Mis on awk jaoks kasutatud käsku?
  12. awk on käsurea utiliit mustrite skannimiseks ja töötlemiseks. See võib jagada stringe, määratledes kohandatud väljaeraldajad.
  13. Kuidas toimib cut käsutöö?
  14. The cut käsk eraldab lõigud igalt sisendirealt. See võib jagada stringe, määrates eraldaja ja valides väljad: echo $string | cut -d';' -f1.
  15. Miks kasutab IFS abiks stringi tükeldamisel?
  16. Kasutades IFS võimaldab teil määrata stringide poolitamiseks kohandatud eraldajad, muutes selle mitmekülgseks erinevate sisendvormingute jaoks.
  17. Kas Bashis on võimalik stringi mitme eraldajaga jagada?
  18. Jah, võite kasutada kombinatsiooni tr ja awk mitme eraldaja käsitlemiseks.
  19. Kas ma võin kasutada sed stringi poolitamiseks Bashis?
  20. Kuigi sed on peamiselt vooredaktor, seda saab kombineerida muude käskudega nagu awk stringe kaudselt poolitada.

Viimased mõtted keelpillide lõhenemise kohta bashis

Stringidega manipuleerimise valdamine Bashis võib teie skriptimise tõhusust märkimisväärselt parandada. Kas kasutades IFS lihtsate eraldajate või keerukamate tööriistade jaoks, nagu tr ja awk, on need tehnikad tõhusa Bashi programmeerimise jaoks hädavajalikud. Ärge unustage alati originaali taastada IFS et vältida ootamatut käitumist oma skriptides. Nende meetodite abil saate oma Bashi skriptides toime tulla paljude stringide töötlemise ülesannetega.