![파일의 라인 평가](https://linux55.com/image/126298/%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%9D%BC%EC%9D%B8%20%ED%8F%89%EA%B0%80.png)
다음과 같은 소스 파일이 있습니다.
server1 Mitigated Vulnerable Mitigated
server2 Vulnerable Vulnerable Mitigated
server3 Mitigated Vulnerable Vulnerable
server4 Mitigated Vulnerable Mitigated
server5 Mitigated Vulnerable Mitigated
server6 Vulnerable Vulnerable Vulnerable
각 행의 두 번째 요소와 네 번째 요소를 비교하고 다음 논리를 사용하여 다섯 번째 요소를 추가하고 싶습니다.
그 중 하나(두 번째 또는 네 번째 요소)가 취약함을 나타내는 경우 다섯 번째 요소는 취약함을 나타냅니다(그리고 다음과 같이 같은 줄에 인쇄하고 싶습니다:
server2 Vulnerable Vulnerable Mitigated Vulnerable
2개(2번째와 4번째)만 완화되면 다섯 번째 요소가 완화됩니다.
세 번째 요소는 무시해도 됩니다.
답변1
사용 awk
:
awk '$2 == "Vulnerable" || $4 == "Vulnerable" { $5 = "Vulnerable" } { print }' file
샘플 데이터에 이를 사용한 결과:
server1 Mitigated Vulnerable Mitigated
server2 Vulnerable Vulnerable Mitigated Vulnerable
server3 Mitigated Vulnerable Vulnerable Vulnerable
server4 Mitigated Vulnerable Mitigated
server5 Mitigated Vulnerable Mitigated
server6 Vulnerable Vulnerable Vulnerable Vulnerable
코드 awk
는 두 번째 및 네 번째 필드를 살펴보고 해당 필드 중 하나가 문자열인 경우 Vulnerable
다섯 번째 필드를 가져옵니다. 그런 다음 모든 필드(모든 입력 줄)를 인쇄합니다.
답변2
Awk
해결책:
이 두 가지 조건의 경우:
- 그 중 하나(두 번째 또는 네 번째 요소)가 다음과 같이 말하면
vulnerable
다섯 번째 요소는 다음과 같습니다.Vulnerable
- 두 개(두 번째와 네 번째)만 있는 경우
mitigated
다섯 번째 요소는 다음과 같습니다.Mitigated
awk '$2$4 ~ /[vV]ulnerable/{ $5="Vulnerable" }
$2 ~ /[mM]itigated/ && $2 == $4{ $5="Mitigated" }1' file
산출:
server1 Mitigated Vulnerable Mitigated Mitigated
server2 Vulnerable Vulnerable Mitigated Vulnerable
server3 Mitigated Vulnerable Vulnerable Vulnerable
server4 Mitigated Vulnerable Mitigated Mitigated
server5 Mitigated Vulnerable Mitigated Mitigated
server6 Vulnerable Vulnerable Vulnerable Vulnerable