如何输出文件并忽略以“?”开头的行?

如何输出文件并忽略以“?”开头的行?

我愿意svn status --show-updates,然后我想要

  • Q1:忽略(不显示)以?
  • Q2:仅显示以开头的行*请注意,* 之前有几个空格。这意味着这*不是该行的第一个字符。

我怎样才能做到这一点?

答案1

您可以使用正则表达式表达这些条件,并grep根据这些条件过滤结果。

第一个是^?。克拉是一个特殊字符,代表一行的开头;以便该表达式匹配紧随其后的行的开头?

第二个是^ *\*。是*一个特殊字符,限定前一个字符 - 这意味着前一个字符可以出现零次或多次。由于*是一个特殊字符,因此您要查找的字符需要转义,因此\*.因此该表达式将匹配行的开头,后跟零个或多个空格,最后跟一个星号。

对于第一个条件,请使用-v选项 forgrep来否定结果。

所以最后,

svn status --show-updates | grep -v '^?'

或者

svn status --show-updates | grep '^ *\*'

正则表达式非常强大,因此许多 Unix 工具都可以使用它们。他们非常值得学习。有一个很棒的教程正则表达式.info

答案2

Q1:一个简单的方法如下

svn st --show-updates -q

st 是 status 的缩写,-q 是 Quiet 的缩写:它将排除尚未添加到存储库中的文件。

Q2:如果你的文件名没有带*,你也可以这样做:

svn status --show_updates|grep -v \*

相关内容