Stygos padalijimas ant skirtuko Bash

Bash

„Bash“ stygų manipuliavimo nutraukimas

Dirbant su apvalkalo scenarijais, įprasta užduotis yra skaidyti eilutę pagal skyriklį. Pavyzdžiui, apsvarstykite eilutę, kurioje yra kabliataškiais atskirti el. pašto adresai. Jei reikia apdoroti kiekvieną el. laišką atskirai, svarbu suprasti, kaip padalinti šią eilutę. Šis straipsnis padės jums įvairiais būdais tai pasiekti Bash.

Išnagrinėsime tokius sprendimus kaip „tr“ komandos naudojimas ir vidinio lauko skyriklio (IFS) manipuliavimas. Pabaigoje galėsite efektyviai tvarkyti eilučių skaidymą ir iš naujo nustatyti IFS į numatytąją reikšmę. Pasinerkime ir supaprastinkime „Bash“ scenarijų kūrimo užduotis!

komandą apibūdinimas
tr Išverčia arba ištrina simbolius. Čia naudojamas kabliataškiui pakeisti naujos eilutės simboliu, kad būtų padalinta eilutė.
IFS Vidinis lauko skyriklis, naudojamas padalyti eilutes pagal konkretų skirtuką Bash scenarijuose.
read -r -a Nuskaito įvesties eilutę ir padalija ją į masyvą. Parinktis -r neleidžia pasvirieji brūkšniai būti interpretuojami kaip pabėgimo simboliai.
echo Spausdina tekstą į standartinę išvestį. Naudojamas suskaidytų eilutės elementų rodymui.
split Perl funkcija, padalijanti eilutę į eilučių sąrašą pagal nurodytą skyriklį.
foreach Perl ciklo struktūra, kuri kartojasi per reikšmių sąrašą.

Bash stygų skaidymo metodų supratimas

Pirmasis „Bash“ scenarijus parodo, kaip padalinti eilutę naudojant komandą. Čia mes apibrėžiame eilutę ir naudoti kartu su tr kabliataškio skyriklį paversti naujos eilutės ženklu. Tai efektyviai suskaido eilutę į atskiras eilutes. The ciklas, tada kartojasi per kiekvieną eilutę, spausdindamas adresus laužtiniuose skliaustuose. Šis metodas yra paprastas ir išnaudoja galingas Unix komandų teksto apdorojimo galimybes manipuliuoti eilutėmis.

Kitas būdas yra koreguoti . Laikinai nustatant į kabliataškį, eilutę galime padalyti į masyvą. Išsaugome originalą į OIFS prieš keisdami, užtikrindami, kad galėsime jį atkurti vėliau. The komanda nuskaito įvesties eilutę į masyvą, vadinamą , padalydami jį pagal modifikuotą . Po apdorojimo originalas IFS yra atstatytas. Šis metodas suteikia programiškesnį būdą tvarkyti eilučių skaidymą „Bash“, leidžiantį naudoti masyvus tolesniam manipuliavimui.

„Bash“ naudojimas norint padalinti eilutes skyrikliu

Bash scenarijus

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

Stygos padalijimas Bash naudojant IFS

Bash scenarijus

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

Python naudojimas stygų skaidymui

Python scenarijus

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

Perl naudojimas norint padalinti eilutę

Perlo scenarijus

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

Išplėstinė stygų skaidymo technika Bash

Kitas galingas būdas skaidyti eilutes Bash yra naudojimas komandą. yra universali komandų eilutės programa, skirta raštų nuskaitymui ir apdorojimui. Tai gali būti ypač naudinga skaidant eilutes, nes leidžia mums apibrėžti pasirinktinius lauko skyriklius. Pavyzdžiui, galime naudoti padalyti eilutę pagal kabliataškio skyriklį ir atspausdinti atskirus komponentus. Šis metodas yra labai lankstus ir gali atlikti sudėtingesnes manipuliavimo eilutėmis užduotis, todėl jis yra vertingas įrankis Bash programuotojo įrankių rinkinyje.

Be to, komanda gali būti naudojama norint padalinti eilutes pagal skyriklius. The komanda paprastai naudojama sekcijoms ištraukti iš kiekvienos įvesties duomenų eilutės. Nurodydami skirtuką su parinktį ir pasirinkdami laukus su -f parinktį, galime efektyviai padalinti ir išgauti eilutės dalis. Pavyzdžiui, naudojant ištrauktų pirmąjį el. pašto adresą iš įvesties eilutės. Šie pažangūs metodai suteikia daugiau valdymo ir tikslumo atliekant manipuliavimo eilutėmis užduotis programoje „Bash“.

  1. Kaip „Bash“ padalyti skirtuko eilutę?
  2. Galite naudoti kintamasis arba tokios komandos kaip , , ir cut suskaidyti eilutes ant skyriklio.
  3. Kas yra kintamasis Bash?
  4. The (Vidinis lauko skyriklis) yra specialus kintamasis, apibrėžiantis simbolį (-ius), naudojamą (-ius) įvesties tekstui padalyti į žodžius arba žetonus.
  5. Kaip galiu iš naujo nustatyti kintamasis į numatytąją vertę?
  6. Išsaugokite originalą vertę prieš ją pakeisdami ir atkurkite po apdorojimo: .
  7. Ką daro komanda daryti eilutės skaidymą?
  8. The komanda išverčia arba ištrina simbolius. Jis gali pakeisti skyriklius naujomis eilutėmis, kad būtų padalinta eilutė: .
  9. Ar galiu padalyti eilutę į masyvą naudodamas „Bash“?
  10. Taip, pakeitus kintamasis ir naudojamas , galite padalyti eilutę į masyvą:
  11. Kas yra naudojama komanda?
  12. yra komandų eilutės programa, skirta šablonų nuskaitymui ir apdorojimui. Jis gali skaidyti eilutes, nustatydamas pasirinktinius lauko skyriklius.
  13. Kaip veikia komandinis darbas?
  14. The komanda ištraukia dalis iš kiekvienos įvesties eilutės. Jis gali skaidyti eilutes, nurodydamas skyriklį ir pasirinkdamas laukus: .
  15. Kodėl vartoja padeda skaidant eilutes?
  16. Naudojant leidžia apibrėžti pasirinktinius skyriklius, skirtus eilėms skaidyti, todėl jis yra universalus įvairiems įvesties formatams.
  17. Ar „Bash“ galima padalyti eilutę keliais skyrikliais?
  18. Taip, galite naudoti derinį ir tvarkyti kelis skyriklius.
  19. Ar galiu naudoti už stygų skaidymą Bash?
  20. Nors pirmiausia yra srauto rengyklė, ją galima derinti su kitomis komandomis, pvz netiesiogiai skaidyti stygas.

Įvaldę manipuliavimą eilutėmis „Bash“, galite žymiai pagerinti scenarijų kūrimo efektyvumą. Ar naudojant paprastiems skirtukams ar sudėtingesniems įrankiams, pvz ir , šie metodai yra būtini efektyviam „Bash“ programavimui. Nepamirškite visada atkurti originalo IFS kad išvengtumėte netikėto elgesio scenarijuose. Naudodami šiuos metodus galite atlikti daugybę eilučių apdorojimo užduočių savo Bash scenarijuose.