Как я могу вывести число на n-й позиции в строке? - PullRequest
0 голосов
/ 12 декабря 2018

Используя bash, допустим, у меня есть следующая строка

string="Same bought 5 bananas, 12 apples, 2 peaches and 16 oranges"

Как мне обрезать все, кроме n-го числа.В этом случае я хочу вывести 12, которое является вторым числом в строке.

Как это можно сделать с помощью bash, grep или sed?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Это может сработать для вас (GNU sed):

sed 's/^\([^0-9]*\([0-9]*\)\)\{2\}.*/\2/;/^$/d' file

Это заменяет текущую строку вторым появлением группы чисел.Строка удаляется, если не выводится число.

0 голосов
/ 12 декабря 2018

Решение с использованием sed

Согласно Полу Ходжесу и Triplee grep -Eo '[0-9]+' <<<"$string"| sed 'nq;d'


Где n - позиция числа

sed 'NUMq;d'
NUM - строки для печати. ​​
2q говорит о выходе из программы на втором
d удалит все остальные строки, кроме последней

.
...