N-е слово в строковой переменной


в Bash я хочу получить N-е слово строки, удерживаемой переменной.

например:

STRING="one two three four"
N=3

результат:

"three"

какая команда/скрипт Bash может это сделать?

6 66

6 ответов:

echo $STRING | cut -d " " -f $N

альтернатива

N=3
STRING="one two three four"

arr=($STRING)
echo ${arr[N-1]}

используя awk

echo $STRING | awk -v N=$N '{print $N}'

тест

% N=3
% STRING="one two three four"
% echo $STRING | awk -v N=$N '{print $N}'
three
STRING=(one two three four)
echo "${STRING[n]}"

никаких дорогих вилок, никаких труб, никаких башизмов:

$ set -- $STRING
$ eval echo ${$N}
three

но остерегайтесь глоббинг.

файл, содержащий некоторые высказывания :

cat test.txt

результат :

This is the 1st Statement
This is the 2nd Statement
This is the 3rd Statement
This is the 4th Statement
This is the 5th Statement

Итак, чтобы напечатать 4-е слово этого утверждения типа:

cat test.txt |awk '{print }'

выход :

1st
2nd
3rd
4th
5th