【Linux】统计文本中每行指定位置出现的字符串的次数
统计文本中每行指定位置出现的字符串的次数
假定情景
某些项目,会把某个特定事件记录到Log中并且落盘(保持到硬盘)。基于落盘后的日志,要统计这些日志里产生该特定事件的次数
统计脚本
可以写一个sh脚本,来解析某个文本指定的位置,出现指定字符串的次数。
parse_count() {
awk '{
suffix = substr($0, length($0) - 87, 88)
print suffix
}' $1 | sort | uniq | grep "Linduo" | wc -l
}
parse_count Linduo.txt
- 该脚本功能是,统计Linduo.txt这个文本中。每一行后88个字符,出现Linduo这个字符串的次数。
脚本说明
- 声明一个awk命令块
awk '{ }'
- 从当前处理的行$0,提前一个字符串。提前位置是长度减去87,提前长度为88。也就是从每行尾部开始提前88个字符。
suffix = substr($0, length($0) - 87, 88)
- 打印提取的子串。
print suffix:打印上一步中提取的子串。
- 指定 awk命令输入文件
$1
- 排序并去重,然后搜索指定的字符。并输出出现指定字符的次数。
| sort | uniq | grep "Entering" | wc -l