Bash:
Merkkijonosta lainausmerkkien poistaminen
Kuinka:
Bash tarjoaa useita tapoja poistaa lainausmerkit merkkijonoista. Tässä muutamia nopeita esimerkkejä:
#!/bin/bash
# Käyttäen muuttujan korvausta sekä yksittäisten että kaksinkertaisten lainausmerkkien poistoon
STRING="\"Hello, World!\""
echo ${STRING//\"}
# Käyttäen `tr`:ää lainausmerkkien poistoon
STRING="'Hello, World!'"
echo $STRING | tr -d "\'"
# Käyttäen `sed`:iä lainausmerkkien poistoon
STRING="\"Hello, World!\""
echo $STRING | sed 's/"//g'
Esimerkkitulostus:
Hello, World!
Hello, World!
Hello, World!
Syväsukellus
Aikoinaan Unix-komennot kuten tr
ja sed
olivat päätensiotekstinkäsittelyyn. Niitä käytetään edelleen nykyään niiden joustavuuden ja tehon vuoksi tekstimuunnoksissa, kuten lainausmerkkien poistamisessa. Ne ovat olennainen osa kenraation kuoriskriptien työkalupakkia.
Bash on itse kehittynyt tästä, ja muuttujan korvaus lisää toisen kerroksen yksinkertaisuutta pienimuotoisiin merkkijonomanipulaatioihin. Se säästää sinua putkittamasta ulkopuolisiin binääreihin, tehden skripteistäsi hieman tehokkaampia.
Vaikka tr
on hieno merkkien poistamiseen, se ei käsittele monimutkaisempia kuvioita. sed
toisaalta käyttää säännöllisiä lausekkeita, joten se on joskus liioittelua ja saattaa olla hitaampi yksinkertaisissa operaatioissa.
Menetelmän valinta riippuu tapauksestasi. Jos sinun tarvitsee poistaa erilaisia lainausmerkkejä ja olet jo Bash-skriptin kontekstissa, muuttujan korvausta on vaikea voittaa sen yksinkertaisuuden vuoksi. Mutta jos olet muuntamassa tekstivirtoja tai monirivisiä tietoja, tr
ja sed
ovat tukevasi kaverit.
Katso myös:
- GNU Bash -käsikirja, erityisesti osiot Parametrin Laajennus ja Kuoriparametrin Laajennus: https://www.gnu.org/software/bash/manual/
tr
:n komentokäsikirja: https://www.gnu.org/software/coreutils/manual/html_node/tr-invocation.htmlsed
virtuaeditorin yleiskatsaus: https://www.gnu.org/software/sed/manual/sed.html