如何输出字符串中第 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
这将用第二次出现的一组数字替换当前行。除非输出数字,否则该行将被删除。
使用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
这将用第二次出现的一组数字替换当前行。除非输出数字,否则该行将被删除。