我的文件看起来像
旧数据
alireza,mahdi,alireza,mohammad
alireza,olivia,amireza,hasan
alireza,alireza,alireza,alireza
新数据
0.54:30.36:N 0.54:32.31:N 0.54:30.36:Y
0.54:30.36:Y 0.54:32.31:N 0.54:30.36:Y
0.54:30.36:N 0.54:32.31:N 0.54:30.36:Y
0.54:30.36:N 0.54:32.31:N 0.54:30.36:N
我想数一数说," Y"每行,
所以输出将是
1
2
1
0
所以我可以像'" grep -w':Y' MYFILE"但后来我不知道怎么算!从那以后......
**更新 我很抱歉改变数据和可能的模式。我想呈现一种简单易懂的格式,但我没有成功。我再次道歉。
答案 0 :(得分:5)
这是一种惯用的awk方式来打印每行上RE的次数:
$ awk '{print gsub(/:Y/,"")}' file
1
2
1
0
答案 1 :(得分:0)
对于您的新数据,您只需更改字段分隔符:
awk -F'[ :.]' '{for(i=1;i<=NF;i++) {if ($i=="Y") c++;}}{print c; c=0}' inputfile
或使用模式匹配:
awk '{for(i=1;i<=NF;i++) {if ($i~/:Y$/) c++;}}{print c; c=0}' inputfile
两者都会产生:
1
2
1
0
用于新输入。
旧答案:您可以使用awk
:
awk -F, '{for(i=1;i<=NF;i++) {if ($i=="alireza") c++;}}{print c; c=0}' inputfile
对于您的样本输入,它会产生:
2
1
4
0