问题描述
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
CACTGCTGTCACCCTCCATGCACCTGCCCACCCTCCAAGGATCNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNGgtgtgtatatatcatgtgtgatgtgtggtgtgtg
gggttagggttagggttaNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNAGaggcatattgatctgttgttttattttcttacag
ttgtggtgtgtggtgNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
预期结果为4
,因为有4
组N
我尝试了grep -Eozc 'N+'
,但结果是1
如果可能的话,我希望也能显示N
的行号和长度
解决方法
awk '$1=$1' FS='' OFS='\n' file | uniq -c | grep -c N
或
tr -d '\r\n' < file | grep -o 'N*' | grep -c .
输出:
4,
以纯色bash方式,无需使用任何外部命令:
const Degree = require('../models/index.js').Degree;
const Teachers = require('../models/index.js').Teachers;
exports.index = (req,res) => {
Degree.findAll({
include: Teachers,order: [
['degreeId','DESC']
]
}).then(results => {
if (results.length > 0) {
res.status(200).json({
'error': false,'status': 200,'data': results
});
res.end();
} else {
res.status(200).json({
'error': false,'message': 'No records available'
});
res.end();
}
}).catch(err => {
console.log(err);
res.status(500).json({
'error': true,'status': 500,'message': 'Internal Server Error'
});
});
};
输出:
v=$(<file)X
v=${v//[[:space:]]}
v=${v//N[^N]/ }
v=${v//[^ ]}
echo ${#v}
,
有点长,但是很简单:
< tmp.txt \
tr -d '\n' | # Strip newlines
tr -s N | # Collapse strings of Ns to a single N
tr -dC N | # Strip anything that *isn't* an N
wc -c # Count the resulting Ns
单线:
< tmp.txt tr -d '\n' | tr -s N | tr -dC N | wc -c
,
从Bash调用Ruby One-Liner
无论是从文件还是从标准输入中读取,您都可以将其作为Bash的Ruby单一代码来进行。例如:
$ ruby -e 'puts ARGF.read.delete("\n").scan(/N+/).count' example.txt
4
$ ruby -e 'puts ARGF.read.delete("\n").scan(/N+/).count' <<< "$str"
4
此概念是将整个文件包含在内,删除所有换行符,然后计算连续的N
个字符的组。
注意:如果要忽略孤立的N,则只需扫描/N{2,}/
。那只会计算两个或更多N
字符的运行。
假设您的数据位于名为test.txt
的文件中:
- 我们从中读取所有数据。
- 显示与我们的模式匹配的行(以
N
开头和结尾,并且仅包含N
) - 计数行数
这是执行此操作的代码:
cat test.txt | egrep -oe "^N*$" | wc -l