用于对“nmemb:(“和“)”之间的数字求和的Shell脚本

o4hqfura  于 2023-02-24  发布在  Shell
关注(0)|答案(1)|浏览(136)

我有一个名为"X"的文件,其中有很多nmemb:(123),nmemb:(56789),......

cat X | grep -o 'nmemb[^_]*$'

输出如:

nmemb:(16384)
nmemb:(16384)
nmemb:(16384)
nmemb:(5608)
nmemb:(10776)
nmemb:(16384)
nmemb:(16384)
nmemb:(16384)
nmemb:(16384)
nmemb:(16384)

如何计算"nmemb:("&")"之间的数字的总和?例如:

cat X | grep -o 'nmemb[^_]*$' | doSumBetweenBracket()
ffdz8vbo

ffdz8vbo1#

像这样:
$ grep -oP 'nmemb:\(\K\d+' X | paste -sd '+' | bc

grep -oP 'nmemb:\(\K\d+' X | awk '{c+=$1}END{print c}'

或仅使用GNUawk(无管道)

awk '/memb:\([0-9]/{match($0, /[0-9]+/, a);c+=a[0]}END{print c}' X
输出
147456

相关问题