![Moquery 및 Grep - 특정 속성이 없는 클래스에 대한 결과 반환](https://linux55.com/image/207790/Moquery%20%EB%B0%8F%20Grep%20-%20%ED%8A%B9%EC%A0%95%20%EC%86%8D%EC%84%B1%EC%9D%B4%20%EC%97%86%EB%8A%94%20%ED%81%B4%EB%9E%98%EC%8A%A4%EC%97%90%20%EB%8C%80%ED%95%9C%20%EA%B2%B0%EA%B3%BC%20%EB%B0%98%ED%99%98.png)
좋은 오후에요!
여러 클래스에 대해 쿼리를 수행하고 특정 속성이 누락된 클래스만 반환하고 싶습니다.
예를 들어, 제가 작업 중인 프로그램에 Car
개체가 있는 클래스(이 경우 자동차) 가 있다고 가정해 보겠습니다 Tyres
. 해당 개체는 Tyres
하나 이상의 속성을 가질 수 있습니다.
Brand 1
Brand 2
Brand 3
내가 원하는 것은 쿼리를 실행하고 다음 클래스를 반환하는 것입니다.
브랜드 없음 1
제가 겪고 있는 문제는 이 쿼리를 실행하고 결과를 grep할 때 위의 요구 사항을 충족하는 클래스를 반환하는 대신 모든 클래스를 반환하고 단순히 브랜드 1을 무시하는 것처럼 보인다는 것입니다.
예를 들어 클래스에 이 매개변수의 목적으로 Car_1
3개의 속성이 있는 객체 가 있는 경우 - 브랜드 3이 없는 클래스만 표시하고 싶습니다. 대신 Grep은 브랜드 3이 생략된 클래스를 반환하는 것 같습니다.Tyres
Brand 1 Brand 2 Brand 3
내가 원하는 것을 달성하기 위한 최선의 솔루션은 무엇입니까?
명백한 모호함에 대해 미리 사과드립니다. 저는 제가 사용하고 있는 프로그램에 대해 중립을 유지하고 올바른 방식으로 결과를 파악하는 데만 집중하려고 노력하고 있습니다.
건배!
답변1
다음과 같이 시도해 보세요.
moquery ..... |
sed -e 's/^#/\n#/' |
perl -00 -ne 'print unless /^Tyres\h*:.*\bBrand 1\b/mig'
스크립트 sed
는 각 앞에 개행 문자를 삽입합니다 #
. 이는 perl
(또는 ) awk
의 "단락 모드"에서 처리하는 데 적합합니다. "단락"은 텍스트 사이에 최소한 한 줄의 빈 줄이 있는 하나 이상의 텍스트 줄입니다.
즉, sed
변환합니다(rednectar.net 블로그 게시물에서 가져온 샘플 데이터).moquery – Cisco의 Mysterious Obscure ACI 쿼리 유틸리티):
# fv.Tenant
name : Tenant5
dn : uni/tn-Tenant5
uid : 15374
# fv.Tenant
name : common
dn : uni/tn-common
uid : 0
# fv.Tenant
name : Tenant3
dn : uni/tn-Tenant3
uid : 15374
이와 관련하여:
# fv.Tenant
name : Tenant5
dn : uni/tn-Tenant5
uid : 15374
# fv.Tenant
name : common
dn : uni/tn-common
uid : 0
# fv.Tenant
name : Tenant3
dn : uni/tn-Tenant3
uid : 15374
그러면 Perl 스크립트는 "Brand 1"이 포함된 Tires 항목을 제외한 모든 레코드를 인쇄합니다. 정규식은 대소문자를 구분하지 않으며 \b
"브랜드 1" 주위에 단어 경계 표시를 사용하므로 부분 일치(예: "오프 브랜드 1" 또는 "브랜드 100")를 수행하지 않습니다.
레코드에 대해 추가 처리(예: 다른 필드 일치, 일부 데이터 추출 및 관련 작업 수행)를 수행해야 하는 경우 다음을 수행할 수 있습니다.
moquery ..... |
sed -e 's/^#/\n#/' |
perl -00 -ne '
next if /^Tyres\h*:.*\bBrand 1\b/mig;
...more perl statements here...;
print'
또는 .NET Framework를 사용하는 대신 독립형 Perl 스크립트를 작성할 수도 있습니다 -n
.
또한보십시오:ACI 객체 moquery 치트 시트 Cisco의 커뮤니티 웹사이트.