• 締切済み

awkの友達 正規表現

以前教えていただいたsplitで X100Y200Z300* をそれぞれ X[1]Y[1]Z[1] に入れたいです [A-Z]にすると X[1]X[2] に 100 200 と入ってしまいます またXYZはXZのように省略されることもあります どのようにすればXYZをX[ ]Y[ ]Z[ ] に入れられるか教えてください お願いします

みんなの回答

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

あー、 > T100U200V300W400X500Y600Z700*T111U222V333*(レコー > ド)T100U200V300W400X500Y600Z700*T1111U2222V3333* > という2つのデータの比較です この括弧に挟まれた(レコード)というのは何を意味してます? 普通に一行目、二行目? それとも * に挟まれたデータが続いてるという意味? > R1 R2どちらも項目が同じ時は省略されています これも見たところ何が R1,R2 なのか判断できません。まあニュアンスは分かるけれども。 > 順序が決まっていないので、省略されるかされないかが解らないた ということなので、こんなデータのとき、3行目で != 判断するようにしてみたが? 問題は4,5行目みたいのか。叩き台にでもしてくれ T100U200V300W400X500Y600Z700*T111U222V333* Z700Y600X500W400V300U200T100*T111U222V333* T100U200V300W400X500Y600Z700*T555U777V888* T100U200V300W400X500Y600*T555U777V888* U200V300W400X500Y600Z700*T555U777V888* BEGIN{FS="\*"} { for (j=1; j<NF; j++) { split($j,b,"[A-Za-z]+"); split($j,a,"[0-9]+"); for (i in a) if (a[i]) n[a[i]]=b[i+1]; for (i in n) { if (c[j,i] != n[i]) f=1; c[j,i]=n[i]; printf "%s=%d ",i,n[i]; } } if (NR>1 && f) printf "Not equal"; f=0; # delete n; print ""; }

pasona1
質問者

お礼

スクリプトありがとうございますm(_ _)m  

pasona1
質問者

補足

>この括弧に挟まれた(レコード)というのは何を意味してます? >普通に一行目、二行目? >それとも * に挟まれたデータが続いてるという意味? FSが*でRSは改行以外の任意です 全角でレコードでやったりもしました >これも見たところ何が R1,R2 なのか判断できません。まあニュアンスは分か>るけれども。 レコードの1つ目がR1で2つ目がR2です レコード1つ目に比較元とレコード2に比較対象をおいてやっています 考えていただいたスクリプト参考にさせていただきます

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.1

>X100Y200Z300*をそれぞれ >X[1]Y[1]Z[1]に入れたいです スクリプト全体を見直した方が良いと思います。 言い換えると、「X[1]Y[1]Z[1]に入れたいです」と思った時点ですでに間違った方向に進んでいる。 全体として何をしたいのでしょうか?

pasona1
質問者

お礼

ありがとうございます 考え直してみます

pasona1
質問者

補足

回答ありがとうございます 例1 T100U200V300W400X500Y600Z700*T111U222V333*(レコード)T100U200V300W400X500Y600Z700*T1111U2222V3333* という2つのデータの比較です R1 R2どちらも項目が同じ時は省略されています つまり T100U200V300W400X500Y600Z700*T111U222V333* というのは T100U200V300W400X500Y600Z700*T111U222V333W400X500Y600Z700* を意味しています なので例1は違いますが 例2 T100U200V300W400X500Y600Z700*T111U222V333*(レコード)T100U200V300W400X500Y600Z700*T111U222V333Z700* は同じです 順序が決まっていないので、省略されるかされないかが解らないため、 フィールドとフィールドとで比べると同じ意味でもはじかれるかもしれないので 質問させていただきました

関連するQ&A