这是部分文件
N W N N N N N N N N N
N C N N N N N N N N N
N A N N N N N N N N N
N N N N N N N N N N N
N G N N N N N N N N N
N C N N N C N N N N N
N C C N N N N N N N N
在每一行中,我想计算所有非“N”字符的总数
我的愿望输出
1
1
1
0
1
2
2
答案1
GNUawk解决方案:
awk -v FPAT='[^N[:space:]]' '{ print NF }' file
FPAT='[^N[:space:]]'
- 定义字段值的模式(除N
字符和空格之外的任何字符)
预期输出:
1
1
1
0
1
2
2
答案2
awk '{ gsub("[ N]",""); print length() }'
答案3
另一种awk
方法(将返回-1对于空行)。
awk -F'[^N ]' '$0=NF-1""' infile
或者在复杂的情况下,它会返回-1在空行上,0仅在空白(制表符/空格)行上。
awk -F'[^N \t]+' '$0=NF-1""' infile
答案4
选择awk解决方案:
awk '{ print gsub(/[^N[:space:]]/,"") }' file
gsub(...)
- 该gsub()
函数返回进行替换的次数。
输出:
1
1
1
0
1
2
2