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$/} @F
scalar
将给出数组元素的数量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); }'