[BASH] Possible to echo only certain range of WORDS in a string?

Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
5 replies · 3K views
zeion
Messages
455
Reaction score
1
Hi,

I'm new to Bash scripting and I need some help with this:
I need to echo only a specified range of words from a string based on index;
so for example if I had:

a="hello how are you today"

Is there a way to echo only "how are you" by specifying the index 2 to 4?
(in one line, possible with one command and without a loop or array?)

Thanks.
 
Physics news on Phys.org
Code:
echo "hello how are you today" | cut -d' ' -f2-4
 
Actually I'm not allowed to use cut either haha, but thanks.
 
then spell out the complete set of rules...better yet, show what you have tried...you have tried something...haven't you?
 
Basically I need to imitate a version of cut without actually using cut.
Right now I'm passing each line read from file into an array, looping through each element (words, split based on IFS), and then updating an output string each time (I don't want it to print on every new line), then printing the combined output string for that line for each line in the file.

I was just wondering it there is a shorter way of doing this; ie. I know you can extract certain range of characters from a string with {$var:1:3} or something like that, was just wondering if there is one similar for arrays; I've looked around but couldn't find any.

Thanks.
 
bash does have arrays, though, or lists, if you will
Code:
arr=(one two three)
echo ${arr[1]}