给定一个包含这样数据的文件(即 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/