同じファイルに複数回表示される2つの文字列間のデータ数を取得する方法

同じファイルに複数回表示される2つの文字列間のデータ数を取得する方法

私のファイルのデータは次のとおりです。

START-OF-FIELDS
ID
NAME
DEPT
END-OF-FIELDS

START-OF-DATA
1|joy|cs
2|sam|ec
END-OF-DATA

START-OF-FIELDS
ID 
NAME
DOB
DEPT
ADDRESS
END-OF-FIELDS

START-OF-DATA
5|joe|13/2/2001/|ee|street1
3|gwen|4/08/1999|cs|street2
END-OF-DATA

期待される出力:-

ID
NAME
DEPT

データセット 1 の数は 3 です。

ID 
NAME
DOB
DEPT
ADDRESS

データセット 2 の数は 5 であり、動的番号付けの場合も同様です。データセット。

開始フィールドと終了フィールドの間、開始データと終了データの間のデータ数を計算したいと思います。誰でも私にこれを行う正確なコードを与えることができますか?使った

sed -n '/^START-OF-FIELDS/,/END-OF-FIELDS/{s/^START-OF-FIELDS//;/^END-OF-FIELDS/d;p;}' Sourcefile.txt > START_OF_FIELDS.TXT

wc -l START_OF_FIELDS.TXT

しかし、望む結果は得られません。

ベストアンサー1

新しい、より良い問題の説明を考慮すると、実際には簡単です。

#!/bin/bash
awk 'BEGIN {
            SETNR=0; 
            MODE="Non-Fields"}
(MODE=="Fields") && (! /START-OF-/ ) && (! /END-OF/ ) {
            print; 
            COUNT++
           }
/START-OF-FIELDS/ {
            COUNT=0; 
            SETNR++; 
            MODE="Fields"
           }
/END-OF/ {
            if (MODE=="Fields") {
                 printf ("Count for data set %d is: %d\n", SETNR, COUNT)
                };
            MODE="Non-Fields"
         }' $*

おすすめ記事