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

标签 linux bash shell unix scripting

给定一个包含这样数据的文件(即 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 并输入我们希望从中提取计数的字段编号。

关于linux - 在 Unix 上计算每行/字段的字符出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8629410/

相关文章:

linux - Bash 脚本错误

linux - 仅打印一次包含字符串的行

linux - 解释 UNIX 中不同的 EXIT 命令

c++ - 当我从 C++ 程序调用脚本时出现语法错误

c++ - 将现有套接字重新连接到新服务器所需的最少工作是什么?

JPanel 中的 Java Linux 终端

bash - 如何在 bash 中多次重复几个字符?

bash - 使用 echo 生成 bash 脚本,shebang 行有问题

bash - 从脚本中通过管道传输 stdout/stderr 时不显示 read -p 提示

ios - xcodebuild 存档失败,xcode 存档成功