スクリプトの助けが必要です。 [閉じる]

スクリプトの助けが必要です。 [閉じる]

私は長い間この問題を解決しようとしてきました。いくつかのアドバイスをしてください。

ファイル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

関連情報