Jeg har en slik streng:
|abcdefg|
Og jeg ønsker å få en ny streng kalt på en eller annen måte (som string2) med den opprinnelige strengen uten de to |
tegnene i starten og på slutten av den, slik at jeg vil ha dette:
abcdefg
Er det mulig i bash?
Du kan gjøre
string="|abcdefg|"
string2=${string#"|"}
string2=${string2%"|"}
echo $string2
Eller hvis strenglengden din er konstant, kan du gjøre følgende
string="|abcdefg|"
string2=${string:1:7}
echo $string2
Dette bør også fungere
echo "|abcdefg|" | cut -d "|" -f 2
Også dette
echo "|abcdefg|" | sed 's/^|\(.*\)|$/\1/'
Du kan også bruke sed for å fjerne | ikke bare ved å referere til selve symbolet, men ved å bruke posisjonsreferanser som i:
$ echo "|abcdefg|" | sed 's:^.\(.*\).$:\1:'
abcdefg
Hvor ':' er skilletegnene (du kan erstatte dem med / eller et hvilket som helst tegn som ikke er i spørringen, et hvilket som helst tegn etter s vil gjøre det) Her betyr ^ (caret) i begynnelsen av inndatastrengen og $ (dollar) betyr på slutten. Den . (punkt) at det er etter caret og den som det er før dollartegnet representerer et enkelt tegn. Så med andre ord sletter vi de første og siste tegnene. Husk at dette vil slette alle tegn selv om | ikke er til stede i strengen.
EKS:
$ echo "abcdefg" | sed 's:^.\(.*\).$:\1:'
bcdef