• 締切済み

awk フィールドへの関連付け

new X100 Y200 Z300 X111 Z333 old X100 Y200 Z300 X111 Y200 Z300 を同じものとして比較したいのです フィールドそのものはレコード2は違いますが new の レコード2のYは200なので 同じものです 正規表現などを使ってフィールド内のX Y Zをばらばらに読ませることは出来ました splitでそれを行うと X[1000] Y[500] Z[3000]などの差もうまれますし それぞれがどのフィールドにあったかを記憶させておく方法などが解りません 教えてください

みんなの回答

noname#194317
noname#194317
回答No.2

ちょっと気になったんですが、 > X[1000] Y[500] Z[3000]などの差もうまれますし なぜそれが問題になりますか?単純に、 $0~/(new)|(old)/{ getline split($0,dat1) getline split($0,dat2) } とすれば、データは以下の順に連想配列に格納されるので、dat1[1]とdat2[1]を比較すれば済みますよね。 dat1[0]=X100 dat1[1]=Y200 dat1[2]=Z300 dat2[0]=X111 dat2[1]=Y200 dat2[2]=Z300

pasona1
質問者

補足

ありがとうございます これでいけそうな気はするのですが、 パースエラーが出てうまく動きません

全文を見る
すると、全ての回答が全文表示されます。
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> フィールド内のX Y Zをばらばらに読ませることは出来ました それができたのなら、 連想配列を使って if ( X != "" ) { a["X"]=X ;}とかして(変数XにはXの値が入っているとして)、 ・項目があったら最新情報に更新 ・項目が無かったら前の値を保持 で if ( a["X"] == b["X"] && a["Y"] == b["Y"] && a["Z"] == b["Z"] ) { 同じ } else { 違う } みたいな判定するとか print "X" a["X"] "Y" a["Y"] "Z" a["Z"] 等と省略されている分を全部補ったファイルを作ってdiffで比較するとか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • awkの友達 正規表現

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

  • アクセスVBA テーブル名を変数とするクエリ実行・エクスポート

    テーブル X(フィールド1~30)を対象とするクエリ Yがあります。 クエリ Yは、フィールド1の値が BBBであるレコードの、フィールド3、5、7を抽出します。 クエリ Yの実行結果をエクセルファイル Zにエクスポートします。 Xと同一の構成である X1~X10という複数のテーブルから一つを選択して、クエリYを実行し て、エクセルファイル Zにエクスポートしたいのですが、VBAでは、どのように記述するのでしょうか? フォーム Fのテキストボックス Tに入力して、テーブルを指定(変数)したいのです。 上記が可能な場合、続けて Zにエクスポートすることはできるのでしょうか? エクスポート用のテーブルを一時的に作成しなければならないのでしょうか? 説明下手で申し訳ございません。お手数ですが、ご教示ください。よろしくお願いします。

  • FileMaker スクリプト

    FileMaker Proで下記のようなケースでよいスクリプトの組み方があればお教えください。  当方はFileMaker Pro 5.5を使用しています。初心者です。 ---------------- 甲 乙 A X B X A X B X B X Y Y A Y B Y Z X A X B X A X B X Y Y A Y Z X A X ---------------- フィールド甲を参照し、フィールド乙に自動的に「X」か「Y」を上のレコードから順次返すスクリプトを組みたいと考えています。 (1)フィールド甲に最初にYがでてくるまではXを返す。 (2)Yがでてきたら、以下のレコードのフィールド乙にYを返す。 (3)Yが登場したあと、最初に「Z」がでてきたレコードからはフィールド乙にXを返す。 (4)次にYが出てくるまでXを返す。 以下繰り返し 以前、類似した事例にて教わったことを応用し、 if、loopを駆使して試みましたが、うまくいきません。

  • たびたび すみません

    たびたび すみません 二変数のX1,X2が独立でそれぞれ正規分布N(0,1)に従う   Y1=exp^-(X1^2+X2^2)/2 Y2=1/2pai arctan (X2/X1) Y1とY2がそれぞれ一様分布(0,1)に従うことを示せ Y1 Y2の最大値Z=max{Y1,Y2}の平均と分散を求めよ

  • 3次元上の三角形内の任意点の高さを求める公式の導き方

    3次元上の三角形内の任意点の高さを求める公式の導き方 3次元上に三角形(平面)があり各頂点(X1,Y1,Z1),(X2,Y2,Z2),(X3,Y3,Z3)の座標が明確であるとき その面上にある任意点(X,Y)のZを求めたいのですが・・・。 公式は発見できたのですが、どのようにしてこの公式が導き出されたのかわかりません。 Z=a(X-X1)+b(Y-Y1)+Z1 a=[(Z2-Z1)(Y3-Y1)-(Y2-Y1)(Z3-Z1)]/[(X2-X1)(Y3-Y1)-(Y2-Y1)(X3-X1)] b=[(X2-X1)(Z3-Z1)-(Z2-Z1)(X3-X1)]/[(X2-X1)(Y3-Y1)-(Y2-Y1)(X3-X1)] 頭の良くないので・・・・ 導き出し方をできるだけわかりやすく教えていただけないでしょうか。

  • 確率

    X1,X2,は共に平均値0,分散1の正規分布に、Yは平均値λ(λ>0)のポアソン分布に従う。 X1,X2,Yは互いに独立とするとき Z=min(X1,X2) ((X1)^2+(X2)^2>Y)   0(その他) により確率変数を定める。このときP(Z>0)を求めよ。Yの扱いがややこしいです。 もうすぐテストで勉強しているのですが、先生の下さったプリントには答えしか載っていません。 どなたか教えてください。 答えは、exp[λ{e^(-1/2)-1}]になります。

  • 二次元正規分布に関連する問題に困っています.

    二次元正規分布に関連する問題に困っています. xy平面上に10×10の100個の格子があり, そのそれぞれの格子がzの値として, 1から100のいずれかの値を持っています. 与えられる点のイメージは以下のようになります. (x,y,z)=(1,1,56) (x,y,z)=(1,2,57) (x,y,z)=(1,3,59) … (x,y,z)=(100,100,98) zの値はxy平面上にランダムに散らばっているのではなく, 波の様なある曲面に沿って散らばっています. 今この局面上に散らばった値をもとに, z=55.55 という値が最も存在し得る位置を求めます. 現在のところ自分の考えではz=55.55という値と, 散らばった100個のzの値との偏差を計算し, この100個の偏差が最小となる点が, 最もz=55.55の点が存在し得るということを考えました. ここで,相関係数ρ=0とした二次元正規分布, f(x,y)=1/(2pi*σx*σy) *exp( -1/2 * ( (x-μx)^2/σx^2 + (y-μy)^2/σy^2 ) ) というf(x,y)を導入して, 上で考えたz=55.55という値が最も存在し得る位置を求めたいです. どなたか確率分布に詳しい方がいらっしゃいましたら, アドバイスをよろしくお願いいたします.

  • 距離で片方の点のZ1を求めるとき

    二点X0,Y0,Z0とX1,Y1,Z1がある時、 距離を求めるのは下記の式でと教えて頂いたのですが、 距離 = √((X0-X1)^2+(Y0-Y1)^2+(Z0-Z1)^2) これを使って距離やZ1以外がわかっているときに 片方の点のZ1を求めたいのですが、 どのようにしたらいいでしょうか? 距離 = √((X0^2-2X0X1+X1^2)+(Y0^2-2Y0Y1+Y1^2)+(Z0^2-2Z0Z1+Z1^2) 距離 = (X0+√(-2X0X1)+X1)+(Y0+√(-2Y0Y1)+Y1)+(Z0+√(-2Z0Z1)+Z1) とやってみたのですが これからどうやってZ1を動かそうか???? [特にこの部分が√(-2Z0Z1)] となってしまいました この時点で間違ってるのでしょうか? 文字式で出したいのですがよろしくお願いいたします m(__)m

  • 複数の変数を持つ値のsort

    下記のようにx(\d+)y(\d+)z(\d)形式で構成されている値をもつリストがあった時に、期待値のように z x y の優先順でsortしたいのですが、よろしくお願いします。 @list = qw( x2048y2z3 x1024y2z5 x1024y4z2 x1024y4z3 x1024y2z2 ) ; 期待値の順 x1024y2z2 x1024y4z2 x1024y4z3 x2048y2z3 x1024y2z5

    • ベストアンサー
    • Perl
  • 接平面を求める際の全微分可能の定義

    曲面z=f(x,y)は、曲面上の点A(x1, y1,z1)において偏微分可能とすると、点Aを通り方向ベクトルd1=(1,0, f_x(x1,y1)), ベクトルd2=(0,1,f_y(x1, y1))をもつ平面αの式はα: z-z1=f_x(x1,y1)*(x-x1)+f_y(x1,y1)*(y-y1)と表す事ができる。 ※このf_x(x1,y1), f_y(x1,y1) は点Aにおける偏微分係数の事です。 すみませんグラフを載せる事ができないので分かりにくいと思いますが、xy平面上の点Bo:(x1+Δx, y1+Δy, 0), 点Bの真上、点Aと同じ高さにある点B:(x1+Δx, y1+Δy, z1), 点Bの真上、平面α上にある点C:(x1+Δx, y1+Δy, z2), そして点Cの真上、曲面z=f(x,y)上にある点D(x1+Δx, y1+Δy, z3)をそれぞれとります。 ここでz1=f(x1, y1) z2= z1+f_x(x1,y1)*(x1+Δx-x1)+f_y(x1,y1)*(y1+Δy-y1)=z1+f_x(x1+y1)*Δx+f_y(x1,y1)*Δy z3=f(x1+Δx, y1+Δy) BD=z3-z1=Δz, CD=ε(x1, y1)とおくと、BD=BC+CD=(z2-z1)-z1=f_x(x1,y1)*Δx+f_y(x1, y1)*Δy+ε(x1, y1)となる。 ここでε(x1, y1)は点Boにおいて曲面z=f(x,y)を平面αで近似するときに生じる誤差のことである。ここで(Δx, Δy)→(0,0)としたときに ε(x1,y1)/√(Δx)^2+(Δy)^2→0となれば、全微分可能だといえる。 質問ですが、まず『ε(x1,y1)は、点Bo(x1+Δx, y1+Δy)において曲面z=f(x,y)を平面αで近似するときに生じる誤差』とありますが、点Boで近似するとはどういう事ですか?? また、誤差ε(x1, y1)のx1, y1はどこからきたのでしょうか?点Aの座標ですか? 次に、『ε(x1, y1)/√(Δx)^2+(Δy)^2→0ならば全微分可能』というところで、これを言い換えると√(Δx)^2+(Δy)^2すなわちABより先にε(x1,y1)が0に近づけばよいとあります。これはもし先に誤差ε(x1,y1)がだんだん小さくなると、曲線ADが三角形ABCの辺AC(これは平面α上にある)に近づくということでしょうか? では仮にABがε(x1,y1)より先に0に近づく場合、ABがほぼ0になった時点でε(x1,y1)はまだほぼ0になっていないので、自分の推測ですが結局平面αが少し上に剥がれたような形になり、曲面z=f(x,y)は、点Aで平面αに近づくとは言えないので、全微分可能ではないという事でしょうか?