ファイルを出力して「?」で始まる行を無視するにはどうすればよいですか?

ファイルを出力して「?」で始まる行を無視するにはどうすればよいですか?

私はsvn status --show-updatesそれをしたいです。

  • Q1:無視(表示しない)?
  • Q2:*で始まる行のみを*表示します。 *前に複数のスペースがあることに注意してください。これは*、その行の最初の文字ではないという意味です。

どうすればいいですか?

答え1

正規表現を使用してこれらの条件を表現し、grepこれらの条件に基づいて結果をフィルタリングできます。

最初はです^?。キャレットは行の始まりを表す特殊文字なので、この表現は直後の行の始まりと一致します?

2番目はです^ *\*。前の文字を限定する特殊文字です*。つまり、前の文字が0回以上表示されることがあります。探している文字は*特殊文字なので、エスケープする必要があります。したがって、.so\*式は行の先頭に一致し、その後に0個以上のスペースが続き、最後にアスタリスクが続きます。

最初の条件では、-vオプションを使用してgrep結果を否定します。

だから結局、

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

または

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

正規表現は非常に強力であり、多くのUnixツールで使用できます。彼らは十分に学ぶ価値があります。素晴らしいチュートリアルがあります正規表現、情報

答え2

Q1:簡単な方法は次のとおりです

svn st --show-updates -q

st は状態の略語、-q は Quiet の略語です。リポジトリにまだ追加されていないファイルを除外します。

Q2:ファイル名に*が含まれていない場合は、次のようにすることもできます。

svn status --show_updates|grep -v \*

関連情報