N-е слово в строковой переменной
в Bash я хочу получить N-е слово строки, удерживаемой переменной.
например:
STRING="one two three four"
N=3
результат:
"three"
какая команда/скрипт Bash может это сделать?
6 ответов:
используя
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
никаких дорогих вилок, никаких труб, никаких башизмов:
$ 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