![모든 입력 라인을 테스트하기 위한 표준 Unix/Linux 유틸리티](https://rvso.com/image/1558044/%EB%AA%A8%EB%93%A0%20%EC%9E%85%EB%A0%A5%20%EB%9D%BC%EC%9D%B8%EC%9D%84%20%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%9C%20%ED%91%9C%EC%A4%80%20Unix%2FLinux%20%EC%9C%A0%ED%8B%B8%EB%A6%AC%ED%8B%B0.png)
입력의 모든 줄이 특정 조건을 충족하는지 테스트해야 하는 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가 아닌 줄을
1
a로 바꾸세요.0
$ cat x | sed -re 's/^1$/0/' -e 's/^.*want.*$/1/' -e 's/^[^1][^$].*$/0/'
0
1
0
1