Virknes sadalīšana uz norobežotāja Bash valodā

Bash

Stīgu manipulāciju nojaukšana valodā Bash

Strādājot ar čaulas skriptiem, izplatīts uzdevums ir sadalīt virkni, pamatojoties uz atdalītāju. Piemēram, apsveriet virkni, kurā ir e-pasta adreses, kas atdalītas ar semikolu. Ja jums ir jāapstrādā katrs e-pasts atsevišķi, ir svarīgi saprast, kā sadalīt šo virkni. Šis raksts palīdzēs jums izmantot dažādas metodes, kā to sasniegt Bash.

Mēs izpētīsim tādus risinājumus kā komandas “tr” izmantošana un iekšējā lauka atdalītāju (IFS) manipulēšana. Beigās varēsit efektīvi rīkoties ar virkņu sadalīšanu un atiestatīt IFS noklusējuma vērtību. Iedziļināsimies un vienkāršosim jūsu Bash skriptēšanas uzdevumus!

Komanda Apraksts
tr Tulko vai dzēš rakstzīmes. Šeit tiek izmantots, lai aizstātu semikolu ar jaunas rindiņas rakstzīmi, lai sadalītu virkni.
IFS Iekšējais lauku atdalītājs, ko izmanto, lai sadalītu virknes, pamatojoties uz noteiktu atdalītāju Bash skriptos.
read -r -a Nolasa ievades rindiņu un sadala to masīvā. Opcija -r novērš slīpsvītru interpretāciju kā atsoļa rakstzīmes.
echo Drukā tekstu standarta izvadē. Izmanto, lai parādītu sadalītās virknes elementus.
split Perl funkcija, kas sadala virkni virkņu sarakstā, pamatojoties uz noteiktu atdalītāju.
foreach Perl cilpas struktūra, kas atkārtojas vērtību sarakstā.

Izpratne par bash stīgu sadalīšanas paņēmieniem

Pirmais Bash skripts parāda, kā sadalīt virkni, izmantojot komandu. Šeit mēs definējam virkni un izmantot saistībā ar tr lai tulkotu semikola atdalītāju jaunās rindiņas rakstzīmē. Tas efektīvi sadala virkni atsevišķās rindās. The cilpa pēc tam atkārtojas katrā rindā, drukājot adreses kvadrātiekavās. Šī metode ir vienkārša un izmanto Unix komandu jaudīgās teksta apstrādes iespējas, lai manipulētu ar virknēm.

Vēl viena metode ietver regulēšanu . Uz laiku iestatot uz semikolu, mēs varam sadalīt virkni masīvā. Mēs saglabājam oriģinālu uz OIFS pirms tā modificēšanas, nodrošinot, ka varam to atjaunot vēlāk. The komanda nolasa ievades virkni masīvā, ko sauc , sadalot to, pamatojoties uz modificēto . Pēc apstrādes oriģināls IFS tiek atjaunots. Šī pieeja nodrošina programmatiskāku veidu, kā apstrādāt virkņu sadalīšanu programmā Bash, ļaujot mums izmantot masīvus turpmākām manipulācijām.

Izmantojot Bash, lai sadalītu virknes uz norobežotāja

Bash skripts

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

Virknes sadalīšana programmā Bash, izmantojot IFS

Bash skripts

#!/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 izmantošana virkņu sadalīšanai

Python skripts

#!/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 izmantošana virknes sadalīšanai

Perl skripts

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

Uzlabotas stīgu sadalīšanas metodes valodā Bash

Vēl viena jaudīga metode virkņu sadalīšanai programmā Bash ir izmantot komandu. ir daudzpusīga komandrindas utilīta, kas paredzēta rakstu skenēšanai un apstrādei. Tas var būt īpaši noderīgs virkņu sadalīšanai, jo tas ļauj mums definēt pielāgotus lauku atdalītājus. Piemēram, mēs varam izmantot lai sadalītu virkni, pamatojoties uz semikola atdalītāju, un izdrukātu atsevišķus komponentus. Šī metode ir ļoti elastīga un var tikt galā ar sarežģītākiem virkņu manipulācijas uzdevumiem, padarot to par vērtīgu rīku Bash programmētāja rīku komplektā.

Turklāt, komandu var izmantot, lai sadalītu virknes, pamatojoties uz norobežotājiem. The komandu parasti izmanto, lai izvilktu sadaļas no katras ievaddatu rindas. Norādot atdalītāju ar opciju un atlasot laukus ar -f opciju, mēs varam efektīvi sadalīt un izvilkt virknes daļas. Piemēram, izmantojot izvilktu pirmo e-pasta adresi no ievades virknes. Šīs uzlabotās metodes nodrošina lielāku kontroli un precizitāti virkņu manipulācijas uzdevumiem programmā Bash.

  1. Kā Bash valodā sadalīt virkni uz norobežotāja?
  2. Jūs varat izmantot mainīgais vai komandas, piemēram , , un cut lai sadalītu virknes uz norobežotāja.
  3. Kas ir mainīgais Bash?
  4. The (Iekšējais lauka atdalītājs) ir īpašs mainīgais, kas definē rakstzīmi(-es), ko izmanto, lai sadalītu ievades tekstu vārdos vai marķieros.
  5. Kā es varu atiestatīt mainīgo līdz noklusējuma vērtībai?
  6. Saglabājiet oriģinālu vērtību pirms tās maiņas un atjaunojiet pēc apstrādes: .
  7. Ko dara komandu darīt virknes sadalīšanā?
  8. The komanda tulko vai dzēš rakstzīmes. Tas var aizstāt atdalītājus ar jaunām rindiņām, lai sadalītu virkni: .
  9. Vai es varu sadalīt virkni masīvā, izmantojot Bash?
  10. Jā, mainot mainīgs un izmantojot , varat sadalīt virkni masīvā:
  11. Kas ir komanda tiek izmantota?
  12. ir komandrindas utilīta paraugu skenēšanai un apstrādei. Tas var sadalīt virknes, definējot pielāgotus lauku atdalītājus.
  13. Kā darbojas komanddarbs?
  14. The komanda izvelk sadaļas no katras ievades rindas. Tas var sadalīt virknes, norādot atdalītāju un atlasot laukus: .
  15. Kāpēc lieto palīdz stīgu sadalīšanā?
  16. Izmantojot ļauj definēt pielāgotus atdalītājus virkņu sadalīšanai, padarot to daudzpusīgu dažādiem ievades formātiem.
  17. Vai Bash ir iespējams sadalīt virkni ar vairākiem atdalītājiem?
  18. Jā, jūs varat izmantot kombināciju un lai apstrādātu vairākus norobežotājus.
  19. Vai es varu izmantot par stīgu sadalīšanu Bashā?
  20. Kamēr galvenokārt ir straumes redaktors, to var apvienot ar citām komandām, piemēram, lai netieši sadalītu virknes.

Virkņu manipulāciju apguve programmā Bash var ievērojami uzlabot jūsu skriptu efektivitāti. Vai izmantojot vienkāršiem norobežotājiem vai sarežģītākiem rīkiem, piemēram un , šīs metodes ir būtiskas efektīvai Bash programmēšanai. Atcerieties vienmēr atjaunot oriģinālu IFS lai izvairītos no neparedzētas uzvedības skriptos. Izmantojot šīs metodes, jūs varat apstrādāt plašu virkņu apstrādes uzdevumu klāstu savos Bash skriptos.