String in Shellscript zerteilen

Hallo
Ich möchte in einem Shellscript einen String auseinandernehmen(= die ersten drei Zeichen erhalten)
Danke im voraus, Stefan

Hallo,

Ich möchte in einem Shellscript einen String
auseinandernehmen(= die ersten drei Zeichen erhalten)
Danke im voraus, Stefan

$ FOO=abcdefghi
$ BAR=`echo $FOO|perl -pe '$_=substr $_, 0, 3'`
$ echo $BAR
abc

Wenn du an bestimmten Trennzeichen zerlegen willst kannst du `cut’ nehmen.

Grüße,
Moritz

Wenn du an bestimmten Trennzeichen zerlegen willst kannst du
`cut’ nehmen.

Schon mal Danke dafür. Aber wie geht das mit cut? Aus der manpage werde ich nicht schlau.
Stefan

Args! Perl! Hilfe! Gleich kommt einer und wird awk dafuer verwenden.

Schon mal Danke dafür. Aber wie geht das mit cut? Aus der
manpage werde ich nicht schlau.

Wieso nicht? Du willst die ersten drei (also alles bis 3) characters (also -c) haben. cut funktioniert ungefaehr so:

[10053] (0) frank@harbard [~] % echo "foobar" |cut -c-3
foo
[10054] (0) frank@harbard [~] % echo "foobar" |cut -c2-3,5
ooa
[10055] (0) frank@harbard [~] % echo "foobar" |cut -c2-3,5-
ooar
[10056] (0) frank@harbard [~] %

HTH,
Gruss vom Frank.

Args! Perl! Hilfe! Gleich kommt einer und wird awk dafuer
verwenden.

Hab ich auch schon drangedacht :wink:
Danke Frank, aber Moritz schrieb, cut könne man für Zerlegung an Trennzeichen verwenden. Wie geht das?
MfG, Stefan

Hallo
Ich möchte in einem Shellscript einen String
auseinandernehmen(= die ersten drei Zeichen erhalten)
Danke im voraus, Stefan

Wie Der Frank schon richtig empfiehlt, kann man es mit awk machen.

Welcome to Darwin!
[apfeltasche:~] sschuste% string=foobar
[apfeltasche:~] sschuste% echo | awk '{print substr("'"${string}"'",0,3)}'
foo

Oder aber auch mit

[apfeltasche:~] sschuste% echo ${string:0:3}
foo

[apfeltasche:~] sschuste% echo `expr "$string" : '\(...\)'`
foo

Gruß,
Stefan

Hallo
Ich möchte in einem Shellscript einen String
auseinandernehmen(= die ersten drei Zeichen erhalten)
Danke im voraus, Stefan

Hallo Stefan,
hierzu gibt es viele Lösungen, wie die anderen Antworten schon zeigen. Wenn du wirklich nur die Shell verwenden willst, bietet die z.B. die bash eine ganz einfache Möglichkeit:

${string:stuck\_out\_tongue:osition:length}

Extracts $length characters of substring from $string at $position.

Position fängt hierbei bei 0 an. Bsp.:

\> a="hello world"
\> echo ${a:2:3}
llo
\>

hth
bernhard

Hallo,

Args! Perl! Hilfe! Gleich kommt einer und wird awk dafuer
verwenden.

Hab ich auch schon drangedacht :wink:
Danke Frank, aber Moritz schrieb, cut könne man für Zerlegung
an Trennzeichen verwenden. Wie geht das?

echo "foo|bar|baz" | cut -d'|' -f 2
bar

Grüße,
Moritz