Toothrot Asked: 2018-06-20 05:38:25 +0800 CST2018-06-20 05:38:25 +0800 CST 2018-06-20 05:38:25 +0800 CST 提取单词前的数字 772 假设我有一个输出多行的程序,其中一些包含以messages数字开头的单词。我怎么能只提取那些数字?(我怎么能只输出它们的总和呢?) text-processing 2 个回答 Voted Stéphane Chazelas 2018-06-20T05:47:11+08:002018-06-20T05:47:11+08:00 使用awk, 并假设这些是十进制整数,数字和 之间有可选的空格messages: cmd | awk ' match($0, /[[:digit:]]+[[:space:]]*messages/) { sum += substr($0, RSTART) } END {print 0+sum}' 与perl: cmd | perl -lne '$s += $1 if /(\d+)\s*messages/; END{print 0+$s}' Best Answer pLumo 2018-06-20T07:35:37+08:002018-06-20T07:35:37+08:00 使用grep: grep -Po "[0-9]+(?= messages)" 说明: -P: 使用 perl-regex (PCRE) -o: 只输出匹配而不输出匹配行。 [0-9]+匹配数字。 (?= messages)仅当“messages”后跟时才匹配(= positive lookahead)。
使用
awk
, 并假设这些是十进制整数,数字和 之间有可选的空格messages
:与
perl
:使用
grep
:说明:
-P
: 使用 perl-regex (PCRE)-o
: 只输出匹配而不输出匹配行。[0-9]+
匹配数字。(?= messages)
仅当“messages”后跟时才匹配(= positive lookahead)。