Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Linux终端中正则表达式和grep的帮助_Regex_Linux_Terminal_Cvs_Grep - Fatal编程技术网

Regex Linux终端中正则表达式和grep的帮助

Regex Linux终端中正则表达式和grep的帮助,regex,linux,terminal,cvs,grep,Regex,Linux,Terminal,Cvs,Grep,我不熟悉正则表达式和grep,但我一直在努力学习它,以帮助我使用控制台工具 我必须使用cvs,当我更新一些文件时,我不需要看到没有更新的文件或扩展名为*.pyc的文件。因此,我创建了一个脚本,该脚本调用: cvs update -d | grep -v 'pyc$' | grep -v '^\?' 第一个问题:为什么cvs update-d | grep-v'(pyc$| ^?)doesn不起作用,所以我需要使用cvs update-d | grep-v'pyc$'| grep-v'^?' 第

我不熟悉正则表达式和grep,但我一直在努力学习它,以帮助我使用控制台工具

我必须使用cvs,当我更新一些文件时,我不需要看到没有更新的文件或扩展名为*.pyc的文件。因此,我创建了一个脚本,该脚本调用:

cvs update -d | grep -v 'pyc$' | grep -v '^\?'
第一个问题:为什么
cvs update-d | grep-v'(pyc$| ^?)
doesn不起作用,所以我需要使用
cvs update-d | grep-v'pyc$'| grep-v'^?'

第二个问题:未更新的文件以一行开头:

-f update: Updating FILE
我尝试了
grep-v'^-f'
grep-v'^-f'
,但没有成功。我的表情怎么了?这是一个正则表达式问题还是关于Linux的一些我不知道的问题


谢谢

只回答了你问题的一部分:

您应该尝试使用egrep而不是grep,因为只有egrep才支持
|
(替换)和
()
(分组)

编辑:

第二个问题可能会发生,因为cvs会向stderr写入一些行,因此您需要通过在命令中附加
2>&1
将stderr重定向到stdout

我必须使用cvs,当我更新 有些文件,我不需要看文件 未更新或未使用*.pyc更新的 例如,扩展

如果这是您想要解决的实际问题(实际上是两个独立的问题),那么在CVS的输出上使用grep从一开始就是错误的解决方案

对于pyc,您应该向项目中添加一个
.cvsignore
文件,其中只有一行写着
*.pyc
,或者将该行添加到现有的.cvsignore文件中。这将使CVS完全忽略所有pyc文件,而不是将它们列为未知文件

.cvsignore文件适用于包含.cvsignore的文件夹下的所有文件和子目录,因此,如果所有pyc文件都在项目的特定子目录中,您应该将cvsignore文件添加到该子目录中,否则只需将其添加到项目的根文件夹中即可


至于忽略未更新的文件,我认为您提到的“
cvs update:updateing foo
”输出是cvs update为存储库中每个访问过的目录打印的输出。要消除此打印输出,请对CVS使用-q标志(此标志位于更新命令之前,如:
CVS-q update-d
)。

好的,egrep工作正常。对第二个问题有什么建议吗?这是一个很好的答案,如果可以的话,我会投更多的票。我想我需要更多地研究一下Linux中的流。谢谢斯塔克!grep-c'^-f'很好用,实际的行是以空格还是其他什么开头的?(你可以通过hexdump或od管道检查)我喜欢你的方法+1.但我将另一个答案标记为接受,不仅因为它解决了我的问题,而且我还学到了更多关于grep的知识。我在其他场景中使用它,在这些场景中,您提供的参数不可用。您知道很多CV。。。你介意帮我回答我在这里问的另一个关于简历的问题吗?:)我测试了-q,它有效,但cvsignore没有。我在我的项目根文件夹中创建了一个带有“*.pyc”的.cvsignore,当我运行cvs更新时,它们会一直显示出来。当我放入项目根文件夹时,它不起作用,但在主文件夹中时它起作用。谢谢