awk를 사용하여 데이터를 설정된 형식으로 정렬

awk를 사용하여 데이터를 설정된 형식으로 정렬

나는 달리고 있다

rpm -Vqf 

각종 시스템 파일이 올바른지 확인하세요. 아래는 샘플 출력입니다.

S.5....T.  c /etc/enviro
missing     /var/run/abrt
file /etc/bluetooth is not owned by any package

파일의 전체 경로를 볼 수 있도록 출력이 아래와 같기를 원합니다. 권한이 /ownr/checksum...정확합니까, 누락되었거나 패키지의 일부가 아닙니까?

/etc/enviro|S.5....T.
/var/run/abrt|missing
/etc/bluetooth|not owned

계속 지켜봤지만 awk그 타당성을 놓을 수 없었다.

답변1

출력이 다음과 같다고 가정합니다.언제나제공하신 세 가지 예에서 볼 수 있듯이 다음이 작동합니다.

rpm -Vqf <arguments> | awk '/(\/[^/ ]+)+$/ {printf("%s|%s\n",$NF,$1);next} /is not owned/{printf("%s|not owned\n",$2)}'

이 호출은 awk다음을 수행합니다.

  • 만약 라인마치다파일 경로인 마지막 레코드(= 공백으로 구분된 문자열)를 인쇄 하려면 절대 파일 경로(예: a /뒤에 "슬래시가 아닌 문자"(공백 없음)가 여러 개 오고 패턴이 반복될 수 있음)를 사용하세요 . 그런 다음 첫 번째 기록이 나옵니다. 그런 다음 실행을 위해 다음 입력 라인으로 점프합니다(그렇지 않으면 동일한 입력 라인에 대해 여러 출력을 얻을 수 있습니다).printf|
  • 줄에 "소유되지 않음"이라는 문자열이 포함되어 있으면 두 번째 레코드(예: 파일 경로)를 인쇄합니다.출력이 항상 읽혀진다고 가정 file <name> is not owned ...), 그 뒤에 고정 문자열 "notowned"가 옵니다.

관련 정보