0

大きなデータ ファイルを解析しようとしています。ファイルには、空白行で区切られた 3 行または 4 行のデータのグループがあります。例えば:

Data Group One Name
Data Group One Datum 1
Data Group One Datum 2
Data Group One Datum 3

Data Group Two Name
Data Group Two Datum 1
Data Group Two Datum 2

Data Group Three Name
Data Group Three Datum 1
Data Group Three Datum 2
Data Group Three Datum 3

4 行のデータ グループをすべて抽出する簡単な方法を探しています (3 行のグループはすべて無視します)。テキスト ファイル内の 4 行のすべてのグループを正規表現で検索する方法はありますか? または、これを行うための他の提案された(おそらくawkまたはsedを使用したもの)方法はありますか?

4

4 に答える 4

1

私はそれをテストしていませんが、これはawkスクリプトで機能するはずです:

#!/bin/awk -f
BEGIN {
        count = 0;
        lines = "";
}
{    
    if ($0 != "") {
        lines = lines \n $0;
        count++;
    } else if (count == 4) {
        print lines;       
    }
    if ($0 == "") {
        count = 0;
        lines = "";
    }
}
于 2011-08-04T15:56:31.630 に答える
1

あまりきれいではありませんが、これはうまくいくはずです:

/[^\n]+\n[^\n]+\n[^\n]+\n[^\n]+(?!(?:\n[^\n]+))/

また

/(?:[^\n]+\n){3}[^\n]+(?!(?:\n[^\n]+))/

基本的に、1 つ以上の非改行文字、次に改行、1 つ以上の非改行文字、改行などを探しています。

編集: 正規表現を修正しました。4 行以上のブロックに一致しました。別のテキスト行に否定先読みを追加しました。

于 2011-08-04T15:40:23.673 に答える
0

改行文字を回避できます-擬似コード例:

\n\n 1-or-more-characters \n 1-or-more-characters \n 1-or-more-characters \n 1-or-more-characters \n\n
于 2011-08-04T15:40:44.063 に答える