linux - 在 Unix 上计算每行/字段的字符出现次数

给定一个包含这样数据的文件(即 stores.dat 文件)

sid|storeNo|latitude|longitude
2tt|1|-28.0372000t0|153.42921670
9|2t|-33tt.85t09t0000|15t1.03274200

返回每行“t”字符出现次数的命令是什么?

例如。会返回:

count   lineNum
   4       1
   3       2
   6       3

另外,按字段的出现次数来执行返回以下结果的命令是什么?

例如。输入第 2 列和字符 't'

count   lineNum
   1       1
   0       2
   1       3

例如。输入第 3 列和字符 't'

count   lineNum
   2       1
   1       2
   4       3

最佳答案

要计算每行字符的出现次数,您可以这样做:

awk -F'|' 'BEGIN{print "count", "lineNum"}{print gsub(/t/,"") "\t" NR}' file
count lineNum
4       1
3       2
6       3

要计算每个字段/列的字符出现次数,您可以这样做:

第 2 栏:

awk -F'|' -v fld=2 'BEGIN{print "count", "lineNum"}{print gsub(/t/,"",$fld) "\t" NR}' file
count lineNum
1       1
0       2
1       3

第 3 栏:

awk -F'|' -v fld=3 'BEGIN{print "count", "lineNum"}{print gsub(/t/,"",$fld) "\t" NR}' file
count lineNum
2       1
1       2
4       3
  • gsub() 函数的返回值是替换的次数。所以我们用它来打印数字。
  • NR 保存行号,因此我们使用它来打印行号。
  • 为了打印特定字段的出现,我们创建一个变量 fld 并输入我们希望从中提取计数的字段编号。

https://stackoverflow.com/questions/8629410/

相关文章:

linux - 如何使用 Linux 命令获取可用内存百分比?

linux - 如何将一个文本文件拆分为多个 *.txt 文件?

r - 在 Ubuntu 和 Mac 上安装 rgl : X11 not found

python - standard_init_linux.go :178: exec user pr

java - 如何下载较旧的 google play 服务?

linux - 如何在linux中停止 screen 进程?

php - 使用 WGET 运行 cronjob PHP

linux - 如何自动化 HTML 到 PDF 的转换?

linux - 如何运行 nohup 并将其 pid 文件写入单个 bash 语句

linux - curl 用于获取标题