如何输出字符串中第 n 个位置的数字?

How can I output the number on the nth position in a string?

使用bash,假设我有以下字符串

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

我怎么能 trim 除了第 n 个数字以外的所有内容。在这种情况下,我想输出 12,这是字符串中的第二个数字。

如何使用 bash、grep 或 sed 来做到这一点?

Solution Using sed

According to Paul Hodges and Triplee grep -Eo '[0-9]+' <<<"$string"| sed 'nq;d'


其中n是数字

的位置

sed 'NUMq;d'
NUM 是要打印的行。
2q 第二行说退出。
d 将删除除最后一行之外的所有其他行

这可能对你有用 (GNU sed):

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

这将用第二次出现的一组数字替换当前行。除非输出数字,否则该行将被删除。