여러 줄과 Grep이 포함된 Bash 스크립트

여러 줄과 Grep이 포함된 Bash 스크립트

OS X 시스템에서 응용 프로그램이 "사용됨"으로 표시된 횟수를 제공하는 특정 명령의 출력이 있습니다. 명령은 입니다 mdls.

출력은 다음과 유사합니다(잘림).

...
kMDItemLastUsedDate            = 2016-03-15 18:45:00 +0000
kMDItemLogicalSize             = 47225668
kMDItemPhysicalSize            = 57065472
kMDItemUseCount                = 90
kMDItemUsedDates               = (
    "2016-02-02 06:00:00 +0000",
    "2016-02-03 06:00:00 +0000",
    "2016-02-04 06:00:00 +0000",
    "2016-02-05 06:00:00 +0000",
    "2016-02-09 06:00:00 +0000",
    "2016-02-10 06:00:00 +0000",
    "2016-02-11 06:00:00 +0000",
    "2016-02-12 06:00:00 +0000",
    "2016-02-13 06:00:00 +0000",
    "2016-02-14 06:00:00 +0000",
    "2016-02-15 06:00:00 +0000",
    "2016-02-16 06:00:00 +0000",
    "2016-02-17 06:00:00 +0000",
    "2016-02-18 06:00:00 +0000",
    "2016-02-19 06:00:00 +0000",
    "2016-02-20 06:00:00 +0000",
    "2016-02-21 06:00:00 +0000",
    "2016-02-22 06:00:00 +0000",
    "2016-02-23 06:00:00 +0000",
    "2016-02-24 06:00:00 +0000",
    "2016-02-25 06:00:00 +0000",
    "2016-02-26 06:00:00 +0000",
    "2016-02-27 06:00:00 +0000",
    "2016-03-02 06:00:00 +0000",
    "2016-03-05 06:00:00 +0000",
    "2016-03-07 06:00:00 +0000",
    "2016-03-09 06:00:00 +0000",
    "2016-03-10 06:00:00 +0000",
    "2016-03-11 06:00:00 +0000",
    "2016-03-12 06:00:00 +0000",
    "2016-03-13 06:00:00 +0000",
    "2016-03-15 05:00:00 +0000"
)
kMDItemVersion                 = "9.0.3"
...

이 목록에서는 와 관련된 특정 항목만 보고 싶습니다 kMDItemUsedDates. 특정 시스템에 해당 항목이 몇 줄이나 있는지는 알 수 없습니다. 1줄일 수도 있고 32줄일 수도 있습니다.

배열과 관련된 날짜 스탬프 항목 수만 검색할 수 있도록 이 출력을 어떻게 처리합니까 kMDItemUsedDates? 날짜 스탬프 자체가 이 명령 출력에서 ​​고유하지 않다는 점은 주목할 가치가 있습니다.

답변1

perl -nE '$c++ if m/^kMDItemUsedDates\s+=\s+\(/..m/^\)/; END { say $c - 2 }'

시작 줄과 끝 줄 사이의 카운터를 일치시키고 증가시킨 다음 해당 개수에서 첫 번째 줄과 마지막 줄에 포함된 개수를 뺀 값을 인쇄합니다. 하나 이상의 파일이나 표준 입력을 제공하십시오.

답변2

출력이 파이프되는 경우 다음은 선택한 행 수를 계산할 수 있습니다.

sed -n '/kMDItemUsedDates\s*= (/{:1;n;/)/!{p;b1;};}' | wc -l

변형 2:

sed '/kMDItemUsedDates\s*= (/,/)/!d;/[()]/d' | wc -l

관련 정보