모든 입력 라인을 테스트하기 위한 표준 Unix/Linux 유틸리티

모든 입력 라인을 테스트하기 위한 표준 Unix/Linux 유틸리티

입력의 모든 줄이 특정 조건을 충족하는지 테스트해야 하는 Bash 스크립트를 작성 중입니다.

일상적으로 표준이거나 Linux 배포판에서 쉽게 사용할 수 있는 유틸리티를 사용하여 루프 코드를 직접 코딩할 필요가 없도록 조건자를 취하고 모든 행을 0 또는 1로 줄이는 방법이 있습니까?

답변1

샘플 데이터("를 포함하는 모든 라인을 원함)원하다"):

$ cat x
not this
want this
not that
want that

당신은 사용할 수 있습니다awk:

  • 1행이 정규식과 일치하면 인쇄/want/
  • 0행이 일치하지 않으면 a를 인쇄하십시오.
$ cat x | awk '{if(match($0,/want/)){print 1}else{print 0}}'
0
1
0
1

아니면 시도해 보세요sed:

  • 다음을 포함하는 줄을 다음 1과 같이 바꿉니다 0(그렇지 않으면 으로 전달됩니다 1).
  • "를 포함하는 줄 바꾸기원하다"와 함께1
  • a가 아닌 줄을 1a로 바꾸세요.0
$ cat x | sed -re 's/^1$/0/' -e 's/^.*want.*$/1/' -e 's/^[^1][^$].*$/0/'
0
1
0
1

관련 정보