String Slicing in Bash (like Python)
A simple function to slice strings in Bash similar to Python’s string slicing functionality.
Examples
[silas@pluto ~]$ string_slice "12345" 0 1 1 [silas@pluto ~]$ string_slice "12345" 0 3 123 [silas@pluto ~]$ string_slice "12345" 2 3 3 [silas@pluto ~]$ string_slice "12345" 2 -2 3 [silas@pluto ~]$ string_slice "12345" -3 345
Implementation
function string_slice { STRING="$1" declare -i LENGTH="${#STRING}" declare -i START="$2" declare -i END="$3" if [ $START -lt 0 ]; then START=$[ $LENGTH + $START ] fi if [ $END -le 0 ]; then END=$[ $LENGTH + $END ] fi START=$[ $START + 1 ] (echo "$STRING" | cut -c $START-$END) 2> /dev/null }