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

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

Например:

STRING="one two three four"
N=3

Результат:

"three"

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

66 голосов | спросил Nicolas Raoul 9 J0000006Europe/Moscow 2010, 16:10:31

6 ответов


0
echo $STRING | cut -d " " -f $N
ответил Amardeep AC9MF 9 J0000006Europe/Moscow 2010, 16:15:54
0

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

N=3
STRING="one two three four"

arr=($STRING)
echo ${arr[N-1]}
ответил aioobe 9 J0000006Europe/Moscow 2010, 16:19:02
0

Использование 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
ответил jkshah 27 +04002013-10-27T19:42:15+04:00312013bEurope/MoscowSun, 27 Oct 2013 19:42:15 +0400 2013, 19:42:15
0
STRING=(one two three four)
echo "${STRING[n]}"
ответил mnrl 15 J0000006Europe/Moscow 2013, 01:56:57
0

Никаких дорогих вилок, никаких трубок, никаких ударов.

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

Но остерегайтесь срываний.

ответил Jens 8 72015vEurope/Moscow11bEurope/MoscowSun, 08 Nov 2015 16:42:36 +0300 2015, 16:42:36
0

Файл, содержащий несколько операторов:

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 $4}'

Вывод:

1st
2nd
3rd
4th
5th
ответил Akhiljith P B 12 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 12 Sep 2018 09:10:35 +0300 2018, 09:10:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132