当前位置:首页 » 网页前端 » 怎么使用shell脚本统计字数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

怎么使用shell脚本统计字数

发布时间: 2022-11-13 20:44:20

A. shell脚本统计某一行指定字符个数

假如是ifconfig输出,利用管道
ifconfig | grep HWaddr | grep : -o | wc -l
先找到 HWaddr 所在的行
然后找到:
然后wc统计下个数

B. 怎么用shell脚本语言编写一个统计当前目录下的文件数目的...

统计当前目录下总共多少文件和文件夹,命令 : find . |wc -l 得出来的数字-1就是了
如果只是统计当前目录下的文件,不统计子文件夹下的文件,那命令是 ls -l |wc -l
得出来的数字-1

C. 用shell写一个脚本,用来统计日志总行数

单个文件统计:
$ zcat OF25_2016-10-26-211731.log.zip | wc -l

一天的所有文件统计:
$ zcat OF25_2016-10-26-*.log.zip | wc -l

使用参数的shell
#/bin/sh
zcat $1_$2-*.log.zip | wc -l

D. shell编程中如何统计一个字符串中某个字符的个数并存储在变量里

1、统计某个字符的个数,以a为例
grep -o a urifle
awk -F "" '{for(i=1;i<=NF;++i) if($i=="a") ++sum}END{print sum}' urfile
#-F ""中间必须要有空格 "a"必须使用双引号,字符串
awk -F "" '{for(i=1;i<=NF;i++)a[$i]++}END{for(j in a) if(j=="c") print a[j]}' urfile
#
2、储存在变量里
echo "0001111" |tr -cd 1 |wc -c

E. Shell脚本实现MapRece统计单词数程序

options:
(1)-input:输入文件路径
(2)-output:输出文件路径
(3)-mapper:用户自己写的mapper程序,可以是可执行文件或者脚本
(4)-recer:用户自己写的recer程序,可以是可执行文件或者脚本
(5)-file:打包文件到提交的作业中,可以是mapper或者recer要用的输入文件,如配置文件,字典等。
(6)-partitioner:用户自定义的partitioner程序
(7)-combiner:用户自定义的combiner程序(必须用java实现)
(8)-D:作业的一些属性(以前用的是-jonconf),具体有:
1)mapred.map.tasks:map task数目
2)mapred.rece.tasks:rece task数目
3)stream.map.input.field.separator/stream.map.output.field.separator: map task输入/输出数
据的分隔符,默认均为\t。
4)stream.num.map.output.key.fields:指定map task输出记录中key所占的域数目
5)stream.rece.input.field.separator/stream.rece.output.field.separator:rece task输入/输出数据的分隔符,默认均为\t。
6)stream.num.rece.output.key.fields:指定rece task输出记录中key所占的域数目
另外,Hadoop本身还自带一些好用的Mapper和Recer:
(1) Hadoop聚集功能
Aggregate提供一个特殊的recer类和一个特殊的combiner类,并且有一系列的“聚合器”(例如“sum”,“max”,“min”等)用于聚合一组value的序列。用户可以使用Aggregate定义一个mapper插件类,这个类用于为mapper输入的每个key/value对产生“可聚合项”。Combiner/recer利用适当的聚合器聚合这些可聚合项。要使用Aggregate,只需指定“-recer aggregate”。
(2)字段的选取(类似于Unix中的‘cut’)
Hadoop的工具类org.apache.hadoop.mapred.lib.FieldSelectionMapRec帮助用户高效处理文本数据,就像unix中的“cut”工具。工具类中的map函数把输入的key/value对看作字段的列表。 用户可以指定字段的分隔符(默认是tab),可以选择字段列表中任意一段(由列表中一个或多个字段组成)作为map输出的key或者value。 同样,工具类中的rece函数也把输入的key/value对看作字段的列表,用户可以选取任意一段作为rece输出的key或value。

后来将slaves节点的hostname也修正为IP映射表内对应的名字,解决?

根据一位外国友人的说明,在rece阶段 ,0-33%阶段是 shuffle 阶段,就是根据键值 来讲本条记录发送到指定的rece,这个阶段应该是在map还没有完全完成的时候就已经开始了,因为我们会看到map在执行到一个百分比后rece也启动了,这样做也提高了程序的执行效率。
34%-65%阶段是sort阶段,就是rece根据收到的键值进行排序。map阶段也会发生排序,map的输出结果是以键值为顺序排序后输出,可以通过只有map阶段处理的输出来验证(以前自己验证过,貌似确有这么回事,大家自己再验证下,免得我误人子弟啊)。
66%-100%阶段是处理阶段,这个阶段才是真正的处理阶段,如果程序卡在这里,估计就是你的rece程序有问题了。
索性等了一晚上,第二天终于有动静了

和上面的记录对比发现,从%67到%77用了11个小时!这明显是rece程序效率太慢了。也可能是数据倾斜问题。中间也试过增加recer的数量,但无果。最终我索性减少了输入文件的行数,使其只有三行:

然后重新运行程序,瞬间得到了结果:

可见,结果是正确的。

令人诧异的是很快就执行完了,难道真的是shell脚本不适合做类似统计这样的事情吗?

F. 如何在Shell脚本中计算字符串长度

${#变量名}
将字符串保存在变量中,在变量名前加#号,放入花括号中,前面加上取变量值符号$,可以返回字符串长度

G. linux shell脚本中如何统计某一行中某字符出现的个数

1、统计某个字符的个数,以a为例
grep -o a urifle
awk -F "" '{for(i=1;i<=NF;++i) if($i=="a") ++sum}END{print sum}' urfile
#-F ""中间必须要有空格 "a"必须使用双引号,字符串
awk -F "" '{for(i=1;i<=NF;i++)a[$i]++}END{for(j in a) if(j=="c") print a[j]}' urfile
#
2、储存在变量里
echo "0001111" |tr -cd 1 |wc -c
如果有时间可以看看《Linux就该这么学》,里面有各种Linux相关知识

H. Shell脚本-awk统计单词数

统计passwd文件每个单词出现的次数,这里以前5行为例

[root@web01 ~]# head -5 /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

【思路】

【直接用awk数组的2次for循环】

[root@web01 ~]# head -5 /etc/passwd | awk -F "[:/]" '{for (i=1;i<=NF;i++) S[$i]++}END{for (key in S) print key,S[key]}'

4 2

10

7 1

nologin 4

bin 4

x 5

adm 3

sbin 5

bash 1

spool 1

var 2

0 2

1 2

lpd 1

2 2

daemon 2

root 3

lp 2

3 1

【先把数据处理成一列  -tr】

[root@web01 ~]# head -5 /etc/passwd|tr "[:/]" "\n"|sed '/^$/d'

【用awk的内置变量RS做成一列】

[root@web01 ~]# head -5 /etc/passwd|awk -vRS="[:/\n]+" '{print $0}'

【接下来就可以用awk单次for循环,也可以用sort+uniq处理】

I. 文本统计工具的设计(使用shell脚本编写程序,实现对文本文件的统计功能。要求使用linux shell编写程序脚本

read a

J. shell命令怎么统计代码行数

wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。 语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。 该命令各选项含义如下: - c 统计字节数。 - l 统计行数。 - w 统计字数。 这些选项可以组合使用。 输出列的顺序和数目不受选项的顺序和数目的影响。 总是按下述顺序显示并且每项最多一列。 行数、字数、字节数、文件名 如果命令行中没有文件名,则输出中不出现文件名。例如: $ wc - lcw file一 file二 四 三三 file一 漆 5二 file二 省略任选项-lcw,wc命令的执行结果与上面一样