Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
207 views
in Technique[技术] by (71.8m points)

bash - Unix - How to find what place a word comes in a sentence

Basically, I'm writing a shell script in Unix and I need to retrieve a value that says what place a word occurs in a sentence/string and then store that value in a variable.

For example, the word "blue" is the third word in the following sentence "the fast blue car". Therefore, I'd like the value for this word to be 3 and store it in a variable called $blue. I.e. echo $blue would print out the number 3.

All the examples I've found so far print out the position of a word in terms of characters not words.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Maybe something like this?

text="The quick brown fox jumps over the lazy dog."
tokens=$(echo $text | sed 's/[.\/;,?!:]//g') # Add any missing punctuation marks here
$pos = 0
for token in $tokens
do
    pos=$(($pos + 1))
    if [[ "$token" == "fox" ]]
    then
        echo $pos
    fi
done

This'll print the position of the word "fox" (4 in this case) out to the command line. Multiple occurrences of the word will yield multiple outputs.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...