Answers:
假设除空格字符和 N
$ perl -lne 'print tr/N //c' ip.txt
1
1
1
0
1
2
2
tr是替换了多少个字符c 补充给定的字符集-l选项的使用,从输入行中删除换行符,以免出现一个错误,并且还为print语句添加换行符
更通用的解决方案
perl -lane 'print scalar grep {$_ ne "N"} @F' ip.txt
-a自动在空格上分割输入行的选项,保存在@F数组中grep {$_ ne "N"} @F返回@F与字符串不匹配的所有元素的数组N
grep {!/^N$/} @Fscalar将给出数组元素的数量tr和POSIX shell脚本:
tr -d 'N ' < file | while read x ; do echo ${#x} ; done
bash,ksh以及zsh:
while read x ; do x="${x//[ N]}" ; echo ${#x} ; done < file
awk '{print length()}'用来避免较慢的shell循环..但后来人们可以用awk本身来完成所有工作……
awk在shell脚本中使用,可使这样的系统全面爬行。通常:相同的延迟拖延适用于固件有限的系统或负载较重的任何系统。
另一种简单的方法是在大多数Unix环境中预先安装的python中进行操作。将以下代码放入.py文件中:
with open('geno') as f:
for line in f:
count = 0
for word in line.split():
if word != 'N':
count += 1
print(count)
然后执行:
python file.py
从您的终端。以上是:
sed更换的东西,你不关心,并awk计算剩余长度sed 's/N//g ; s/\s//g' file | awk '{ print length($0); }'