linux如何使用grep ,wc -l命令统计一个文件中的多个字符串的个数,并且只读取1次文件。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux如何使用grep ,wc -l命令统计一个文件中的多个字符串的个数,并且只读取1次文件。相关的知识,希望对你有一定的参考价值。

如何使用grep ,wc -l命令统计一个文件中的多个字符串的个数,并且只读取1次文件。
如:我要统计一个文件中的 aaa,bbb,ccc 3个字符串的数目,但为了提高读取效率,不想读3次文件分别搜索3个字符串,而想一次读取同时输出3个字符串的统计数目。
请问应怎么写shell或命令,谢谢了!

 absolute 绝对的, G: general 一般的 Mpa(g)系指表压, Mpa(a)系指绝对压力。Mpa(g)系指表压。Mpa(a)系指绝对压力。绝对压力和表压的关系是表压+当地的大气压=绝对压力。 例如:表压0.1MPaG,绝压=0.1+0.1=0.2MPaA 一个大气压为0.1013MPa。 参考技术A tr ' ' '\n' | sort | uniq -c 这样读取一次所有的字符的统计次数都出现.追问

这个命令好像用来进行字符串替换的,具体统计多个字符串的个数,应该怎么做

追答

你试一下就知道了. 就是统计.为什么不试试呢?

参考技术B more servermon.log | tr ' ' '\n' | sort | uniq -c | grep -E "stopped|server|manually"本回答被提问者采纳 参考技术C #grep [aaa,bbb,ccc] | wc -l追问

你这个不能达到目的啊。例如
2011-09-27 17:09:41, server is started!
2011-09-27 17:13:38, server is started!
2011-09-27 17:31:18, server is manually stopped!
2011-09-27 21:05:15, server is started!
2011-09-27 22:32:19, server is started!
2011-09-28 14:55:55, server is started!
使用你的命令:more servermon.log |grep [stopped,server,manually] | wc -l
只能显示:6
不能分别显示:1,6,1

追答

wc -l 最后是计算所有行数 本身就是一个汇总
如果不重复读取 这个我真不会 看看有没有高手解答一下

Linux系统下如何查看CPU个数

查看逻辑CPU个数:
#cat /proc/cpuinfo |grep "processor"|sort -u|wc -l
24

查看物理CPU个数:

#grep "physical id" /proc/cpuinfo|sort -u|wc -l                   
2
#grep "physical id" /proc/cpuinfo|sort -u                   
physical id     : 0
physical id     : 1

查看每个物理CPU内核个数:

#grep "cpu cores" /proc/cpuinfo|uniq
cpu cores       : 6

每个物理CPU上逻辑CPU个数:

#grep "siblings" /proc/cpuinfo|uniq
siblings        : 12

判断是否开启了超线程:

如果多个逻辑CPU的"physical id"和"core id"均相同,说明开启了超线程,或者换句话说

逻辑CPU个数 > 物理CPU个数 * CPU内核数   开启了超线程
逻辑CPU个数 = 物理CPU个数 * CPU内核数   没有开启超线程

一次性查询所有信息:

#!/bin/bash

physicalNumber=0
coreNumber=0
logicalNumber=0
HTNumber=0

logicalNumber=$(grep "processor" /proc/cpuinfo|sort -u|wc -l)
physicalNumber=$(grep "physical id" /proc/cpuinfo|sort -u|wc -l)
coreNumber=$(grep "cpu cores" /proc/cpuinfo|uniq|awk -F‘:‘ ‘{print $2}‘|xargs)
HTNumber=$((logicalNumber / (physicalNumber * coreNumber)))

echo "****** CPU Information ******"
echo "Logical CPU Number  : ${logicalNumber}"
echo "Physical CPU Number : ${physicalNumber}"
echo "CPU Core Number     : ${coreNumber}"
echo "HT Number           : ${HTNumber}"

echo "*****************************"

执行结果:

#./cpuinfo  
****** CPU Information ******
Logical CPU Number  : 24
Physical CPU Number : 2
CPU Core Number     : 6
HT Number           : 2
*****************************

以上是关于linux如何使用grep ,wc -l命令统计一个文件中的多个字符串的个数,并且只读取1次文件。的主要内容,如果未能解决你的问题,请参考以下文章

linux Shell 中grep+wc取值在shell中的结果与手动执行结果不一致的坑

Linux CPU相关信息查看

Linux CPU相关信息查看

linux查看硬盘大小,CPU信息,内存信息

linux 下查看机器是cpu是几核的

linux查看cpu内存版本信息