2016-04-01 8 views
1

Ich möchte eine Zeichenfolge ausschneiden und nach dem ersten Auftreten von Komma einer Variablen zuweisen.Eine Zeichenfolge nach einem bestimmten Muster (Komma) ausschneiden

my_string="a,b,c,d,e,f" 

Ausgang erwartet:

output="b,c,d,e,f" 

wenn ich den Befehl

output=`echo $my_string | cut -d ',' f2 

Ich bin nur b als Ausgabe zu bekommen.

+0

[Zitieren Sie Ihre Variablen] (https://unix.stackexchange.com/questions/171346/security-implications-of-forgetting-to-quote-a-variable-in-bash-posix-shells) - ' echo "$ my_string" | ... ' –

Antwort

1

einen Strich Hinzufügen '-' bis zum Ende Ihres -f2 ausgibt, den Rest des Strings.

$ echo "a,b,c,d,e,f,g"|cut -d, -f2- 

b,c,d,e,f,g 
+1

Dies liegt daran, dass' -f' * Bereiche * von Feldern annehmen kann. Wenn Sie das Ende des Bereichs nicht angeben, wird der Bereich bis zum letzten Feld fortgesetzt. –

0

Sie müssen das Minuszeichen (-) nach der gesuchten Position hinzufügen.

a=`echo $my_string|cut -d "," -f 2-` 

echo $ a
b, c, d, e, f

1

Mit dem Parameter Expansion statt cut:

$ my_string="a,b,c,d,e,f" 
$ output="${my_string#*,}" 
$ echo "$output" 
b,c,d,e,f 

${my_string#*,} steht für "alles entfernen bis zu und einschließlich des ersten Komma von my_string" (siehe Bash manual).

Verwandte Themen