4

わかりましたので、2日を費やした後、私はそれを解決することができず、今はほとんど時間がありません. とてもくだらない質問かもしれませんが、よろしくお願いします。私のawkスクリプトは次のようにします:

BEGIN{ n=50; i=n; }
FNR==NR {
            # Read file-1, which has just 1 column
            ids[$1]=int(i++/n);
            next
        }
        {
            # Read file-2 which has 4 columns
            # Do something
            next
        }
 END {...}

それは正常に動作します。しかし、今は 3 つのファイルを読み取るように拡張したいと考えています。たとえば、「n」の値をハードコーディングする代わりに、プロパティ ファイルを読み取り、そこから「n」の値を設定する必要があります。私はこの質問を見つけて、次のようなことを試しました:

BEGIN{ n=0; i=0; }
FNR==NR {
            # Block A
            # Try to read file-0
            next
        }
        {
            # Block B
            # Read file-1, which has just 1 column
            next
        }
        {
            # Block C
            # Read file-2 which has 4 columns
            # Do something
            next
        }
 END {...}

しかし、それは機能していません。ファイル 0 に対してブロック A が実行され、プロパティ ファイルからプロパティを読み取ることができます。ただし、ブロック B はファイル file-1 と file-2 の両方に対して実行されます。また、ブロック C は実行されません。

誰かがこれを解決するのを手伝ってくれますか? これまで awk を使用したことがなく、構文が非常にわかりにくいです。また、 awk がさまざまなファイルから入力を読み取る方法を誰かが説明できる場合、それは非常に役立ちます。

質問にさらに詳細を追加する必要がある場合はお知らせください。

4

3 に答える 3

1

おそらく、次のような追加の構造を追加することを検討する必要があります。

BEGIN { file_number=1 }
FNR==1 { ++file_number }
file_number==3 && /something_else/ { ...}
于 2014-07-14T15:35:32.953 に答える