2017-03-07 4 views
-1

データをCSVファイル内にグループ化するには、通常の表現が必要です。私は特定の文字列 "PDP-TD-PDP"にデータをグループ化する必要があります 私のファイルの内容は以下の通りです。データをグループ化するための正規表現

PDP-TD-PDP 
aaaaaa 
bbbbbb 
cccccc 
dddddd 
eeeeee 
PDP-TD-PDP 
ffffff 
gggggg 
hhhhhh 
iiiiii 
PDP-TD-PDP 
jjjjjj 
kkkkkk 
llllll 
mmmmmm 

だから私の結果は以下のようにする必要があり、私はそれぞれの特別な文字列「PDP-TD-PDP」のために私たちがロードする必要があるため、各

1 PDP-TD-PDP 
1 aaaaaa 
1 bbbbbb 
1 cccccc 
1 dddddd 
1 eeeeee 
2 PDP-TD-PDP 
2 ffffff 
2 gggggg 
2 hhhhhh 
2 iiiiii 
3 PDP-TD-PDP 
3 jjjjjj 
3 kkkkkk 
3 llllll 
3 mmmmmm 

とのデータ我々は、この要件を必要とするグループに必要異なるテーブルへのコンテンツ。私たちがグループIDを持っていれば、ファイルから簡単に抽出することができます

+1

何を試しましたか?何がうまくいかない? – Toto

+1

あなたは正規表現がこれのためのツールだと思いましたか? – Biffen

答えて

0

文字列を線分に分割し、それらをアナジーゼーションするのはどうですか?

const data = ` 
 
PDP-TD-PDP 
 

 
aaaaaa 
 

 
bbbbbb 
 

 
cccccc 
 

 
dddddd 
 

 
eeeeee 
 

 
PDP-TD-PDP 
 

 
ffffff 
 

 
gggggg 
 

 
hhhhhh 
 

 
iiiiii 
 

 
PDP-TD-PDP 
 

 
jjjjjj 
 

 
kkkkkk 
 

 
llllll 
 

 
mmmmmm` 
 

 
const asignId = data => { 
 
    const lines = data.split('\n') 
 
    let out = '' 
 
    let id = 0 
 
    for (let i = 0; i < lines.length; i++) { 
 
     if (/\S+/.test(lines[i])) { 
 
      if (/PDP-TD-PDP/.test(lines[i])) id++ 
 
      out += id + ' ' + lines[i] + '\n' 
 
     } else { 
 
      out += lines[i] + '\n' 
 
     } 
 
    } 
 
    return out 
 
} 
 
console.log(asignId(data))

0

あなたは正規表現を求めるが、カウンターを維持するために、あなたはもっと何かまたは何か他のものを必要としています。あなたが使用している正規表現の言語(例えば、perlなど)を記述すると、正規表現を提供することができます。

しかし、サンプルテストは、awkスクリプトを使用してサンプル出力に変換できます(CSVではないことに注意してください)。さんがあなたのサンプルテキストが呼び出されると仮定しよう:「sample.csv」

awk 'BEGIN { count=0 } { if ($1 == "PDP-TD-PDP") count++; print count, $0 }' sample.csv > sample.out 

その後、sample.outがあなたがあなたのサンプル中のために尋ねた出力を持つことになります。 $ 0はレコード全体を含み、$ 1は最初の単語を含みます。

ただし、

1、....

1、....

2、....

:あなたはCSVファイルを扱っている言及として、あなたはおそらくより多くのような出力をしたいです

2、....

それでは、あなたのawkスクリプトは次のようになります。

awk 'BEGIN { FS=",", count=0 } { if ($1 == "PDP-TD-PDP") count++; print count "," $0 }' sample.csv > sample.out 

お知らせ変更s:冒頭(フィールド区切り)にFSを設定し、printステートメントを変更して、コンマの前後にスペースを入れずに、カウントとレコードの間にカンマを表示します。

PDP-TD-PDPが最初のレコードだけでなく、どこにでも出現できる場合は、($ 1 == "PDP-TD-PDP")を(/ PDP-TD-PDP /)に変更します。

関連する問題