shell 百例收集12 求文本中的最大最小值

1,Data.txt
内容如下

11-Mar-2011
21:14:34.066
queries:
client
1.1.1.1#28752:
view
view_1:
query:
w1.test.com

11-Mar-2011
21:14:34.095
queries:
client
2.2.2.2#53:
view
view_2:
query:
w2.test.com

11-Mar-2011
21:14:34.095
queries:
client
1.1.1.1#19055:
view
view_1:
query:
w1.test.com

11-Mar-2011
21:14:34.095
queries:
client
2.2.2.2#62526:
view
view_2:
query:
w1.test.com

11-Mar-2011
21:14:34.095
queries:
client
1.1.1.1#14660:
view
view_2:
query:
w2.test.com

11-Mar-2011
21:14:34.095
queries:
client
1.1.1.1#37657:
view
view_2:
query:
w2.test.com

 

要求已去重的模式,倒叙的输出各个IP的出现次数(尽量已精简的方式实现)

2 有个文件file,其内容如下:

12 34 56 78

24 65 87 90

76 11 67 87

100 89 78 99

求出文本中数字的最大、小值


 

 

 

 

自己做的:

第一题:
# cat data.txt |awk '/^[0-9]*\./{print $0}'|awk -F"#" '{print $1}'|sort -r|uniq -c
      2 2.2.2.2
      4 1.1.1.1

我觉得最好是这样截取
IP:# cat data.txt |awk '/^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/{print $0}'
1.1.1.1#28752:
2.2.2.2#53:
1.1.1.1#19055:
2.2.2.2#62526:
1.1.1.1#14660:
1.1.1.1#37657:

思路,找出数字开头跟着. 然后再以#分割截取,汇总

第二题:# cat file |awk '{for(i=1;i<NF;i++)a[$i]}END{for(j in a)print j}'|awk '{if(NR==1)min=$1;if($1>max)max=$1;if($1<min)min=$1}END{print max,min}'
100 11

]#  cat file |awk '{for(i=1;i<NF;i++)a[$i]}END{for(j in a)print j}'
100
65
56
67
76
78
11
87
12
89
24
34
这样可以输出每一个

然后
awk '{if(NR==1)min=$1;if($1>max)max=$1;if($1<min)min=$1}END{print max,min}'
这里最大值可以不用参照,但最小值需要参照,所以要if(NR==1)min=$1 给个初始值




参考其他人的答案:
[root@rhel6 script]# grep -oP '(\d+\.){3}\d+' list5|sort|uniq -c|awk '{print $2,$1}'
1.1.1.1 4
2.2.2.2 2
2、
[root@rhel6 script]# sed 's/ /\n/g' list4|sort -n|sed -n '1p;$p'
11
100
 

 

 

你可能感兴趣的:(shell,最小值,最大值,awk,休闲)