스크립트에 대한 도움이 필요합니다. [닫기]

스크립트에 대한 도움이 필요합니다. [닫기]

나는 오랫동안 이 문제를 해결하려고 노력해 왔습니다. 몇 가지 조언을 해주세요.

파일 1.txt

Alya Grant
cat
dog

Ava
dog
tiger
snake

Samia
bus
train
car
plane

나에게 필요한 결과는 이것이다.

Alya Grant
cat
dog
Alya Grant=2

Ava
dog
tiger
snake
Ava=3

Samia
bus
train
car
plane
Samia=4

(또는) 이렇게

Alya Grant=2
Ava=3
Samia=4

답변1

/path/to/input-file게시물에 언급한 목록이 포함되어 있다고 가정하면 다음을 사용할 수 있습니다.

awk 'BEG{name="";count=0}{if ($0 == "") { print name "=" count; name = ""; count=0; } else { if (name == "") { name = $0; } else {count = count + 1} }}END{print name "=" count;}' /path/to/input-file
Alya Grant=2
Ava=3
Samia=4

답변2

awk의 경우 일련의 빈 줄을 다음과 같이 사용하십시오.기록 구분 기호개행 문자는 다음과 같습니다.필드 구분 기호. 그러면 출력은 첫 번째 필드와 필드 수에서 1을 뺀 값입니다.

awk '
    BEGIN {FS = "\n"; RS = ""; OFS = "="}
    { print $1, NF - 1 }
' file1.txt

관련 정보