How to split a string in shell and get the last field How to split a string in shell and get the last field bash bash

How to split a string in shell and get the last field


You can use string operators:

$ foo=1:2:3:4:5$ echo ${foo##*:}5

This trims everything from the front until a ':', greedily.

${foo  <-- from variable foo  ##   <-- greedy front trim  *    <-- matches anything  :    <-- until the last ':' }


Another way is to reverse before and after cut:

$ echo ab:cd:ef | rev | cut -d: -f1 | revef

This makes it very easy to get the last but one field, or any range of fields numbered from the end.


It's difficult to get the last field using cut, but here are some solutions in awk and perl

echo 1:2:3:4:5 | awk -F: '{print $NF}'echo 1:2:3:4:5 | perl -F: -wane 'print $F[-1]'