所以我提出了两个命令:
1:grep -c [^[^aeiouAEIOU]] filename.txt;
结果:52331
2:grep -v -c [^aeiouAEIOU] filename.txt;
结果:52333
这两个命令对我来说是一样的,但结果不同。
请帮忙,这对我没用。
答案 0 :(得分:2)
这两个命令确实做了不同的事情,而且没有一个实际上按照你的想法行事:
grep -c [^[^aeiouAEIOU]] filename.txt
你无法真正嵌套[^...]
表达式。相反,此正则表达式被解释为[^[^aeiouAEIOU]
与]
连接。也就是说,它会匹配行中的任何位置,而不是[
,^
或元音和]
的任何字符组合。例如,这些字符串将匹配:b]
,c]
,#]
,;]
;这些不会:a]
,E]
,c
,d
。并且“该行中的任何位置”表示上面的grep
命令会计算aaab]
,i uc]
等行。
至于你的第二个命令,
grep -v -c [^aeiouAEIOU] filename.txt
这里有双重否定。首先,[^aeiouAEIOU]
匹配除元音之外的任何字符。另一方面,传递给-v
的{{1}}选项会反转匹配,因此它会匹配grep
未匹配的任何行。最终结果是,你告诉[^aeiouAEIOU]
:“计算所有没有grep
以外的符号的行”。也就是说,它只计算仅包含元音的行。
实际上应该的两个命令会为您提供不以元音开头的行数:
aeiouAEIOU
答案 1 :(得分:0)
你也可以试试这个:
void move(){
if (keyPressed) {
if (key == 'a') {
shipLR = shipLR - 20; // Go left
return;
}
if (key == 'd') { // still inside if keyPressed
shipLR = shipLR + 20; // Go right
return;
}
if (key == 'w') {
...
}
} // end of if keyPressed
}