파일을 출력하고 "?"로 시작하는 줄을 무시하려면 어떻게 해야 합니까?

파일을 출력하고 "?"로 시작하는 줄을 무시하려면 어떻게 해야 합니까?

나는 하고 svn status --show-updates그 다음에는 원한다

  • Q1: 무시(표시하지 않음)?
  • Q2: *로 시작하는 줄만 *표시합니다. * 앞에 공백이 여러 개 있다는 점에 유의하세요. 이는 *해당 줄의 첫 번째 문자가 아니라는 의미입니다.

어떻게 해야 하나요?

답변1

정규식을 사용하여 이러한 조건을 표현하고 grep이러한 조건에 따라 결과를 필터링할 수 있습니다.

첫 번째는 입니다 ^?. 캐럿은 줄의 시작을 나타내는 특수 문자이므로 이 표현은 바로 뒤에 오는 줄의 시작과 일치합니다 ?.

두 번째는 입니다 ^ *\*. 이전 문자를 한정하는 특수 문자 입니다 *. 즉, 이전 문자가 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 \*

관련 정보