too*_*oop 44 unix linux bash shell scripting
给定一个包含这样数据的文件(即stores.dat文件)
sid|storeNo|latitude|longitude
2tt|1|-28.0372000t0|153.42921670
9|2t|-33tt.85t09t0000|15t1.03274200
Run Code Online (Sandbox Code Playgroud)
什么是返回每行't'字符出现次数的命令?
例如.会回来:
count lineNum
4 1
3 2
6 3
Run Code Online (Sandbox Code Playgroud)
另外,要按字段出现次数来执行此操作,返回以下结果的命令是什么?
例如.第2列和字符't'的输入
count lineNum
1 1
0 2
1 3
Run Code Online (Sandbox Code Playgroud)
例如.第3列和字符't'的输入
count lineNum
2 1
1 2
4 3
Run Code Online (Sandbox Code Playgroud)
jay*_*ngh 46
要计算每行字符的出现次数,您可以执行以下操作:
awk -F'|' 'BEGIN{print "count", "lineNum"}{print gsub(/t/,"") "\t" NR}' file
count lineNum
4 1
3 2
6 3
Run Code Online (Sandbox Code Playgroud)
要计算每个字段/列的字符出现次数,您可以执行以下操作:
第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
Run Code Online (Sandbox Code Playgroud)
第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
Run Code Online (Sandbox Code Playgroud)
gsub()function的返回值是替换次数.所以我们用它来打印数字.NR 保存行号,以便我们使用它来打印行号. fld并输入我们希望从中提取计数的字段编号.Gab*_*urt 43
grep -n -o "t" stores.dat | sort -n | uniq -c | cut -d : -f 1
Run Code Online (Sandbox Code Playgroud)
几乎完全给出你想要的输出:
4 1
3 2
6 3
Run Code Online (Sandbox Code Playgroud)
感谢@ raghav-bhushan grep -o提示,这是多么有用的旗帜.-n标志也包括行号.
art*_*rtm 19
要计算每行字符的出现次数:
$ awk -F 't' '{print NF-1, NR}' input.txt
4 1
3 2
6 3
Run Code Online (Sandbox Code Playgroud)
这会将字段分隔符设置为需要计数的字符,然后使用字段数大于分隔符数的事实.
要首先计算cut该列中特定列的出现次数:
$ cut -d '|' -f 2 input.txt | awk -F 't' '{print NF-1, NR}'
1 1
0 2
1 3
$ cut -d '|' -f 3 input.txt | awk -F 't' '{print NF-1, NR}'
2 1
1 2
4 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63251 次 |
| 最近记录: |