質問編集履歴

3

syuusei

2017/10/18 04:22

投稿

dousuruyo
dousuruyo

スコア74

test CHANGED
File without changes
test CHANGED
@@ -110,7 +110,7 @@
110
110
 
111
111
  prc=((%price*%qty))
112
112
 
113
- prc_minus=(("'"$price"'"*"'"$qty"'"))
113
+ prc_minus=(("'"$price"'"*"'"$qty"'"*-1))
114
114
 
115
115
  if(prc==prc_minus){print NR" t";print "'"$nr"'"" t";exit;}
116
116
 

2

現状困っている点を具体的に追記

2017/10/18 04:22

投稿

dousuruyo
dousuruyo

スコア74

test CHANGED
File without changes
test CHANGED
@@ -84,7 +84,49 @@
84
84
 
85
85
 
86
86
 
87
+ ###現状困っている点
87
88
 
89
+ 現状は、マイナスデータを最初にすべて抽出して、それを回したwhileループ中で、
90
+
91
+ マイナスデータとキーがすべて一致する、かつ、price*qtyの絶対値が一致する
92
+
93
+ というデータの行数を一行取得して、その後awk中のexitで次のwhileループに入る、という形をとっています
94
+
95
+
96
+
97
+ ただ、これだとキーが重複するレコードがマイナス、プラスともに複数あった場合に、プラスのほうのデータを一つしか相殺することができないので困ってます・・
98
+
99
+
100
+
101
+ ```こんな感じ
102
+
103
+ while 必要なカラム(qtyがマイナスであるレコードの各カラム) ; do
104
+
105
+ cat 元データ |
106
+
107
+ awk '
108
+
109
+ if(キー値がすべてwhileループで回っているそれと一致すること){
110
+
111
+ prc=((%price*%qty))
112
+
113
+ prc_minus=(("'"$price"'"*"'"$qty"'"))
114
+
115
+ if(prc==prc_minus){print NR" t";print "'"$nr"'"" t";exit;}
116
+
117
+ ##ここでexitすることで次のwhileループへ行く
118
+
119
+ }
120
+
121
+ '
122
+
123
+ done > 行数と削除フラグを持った中間ファイル
124
+
125
+ ```
126
+
127
+
128
+
129
+ イメージ上記のように組んでいる現状です。。
88
130
 
89
131
 
90
132
 

1

修正

2017/10/18 04:19

投稿

dousuruyo
dousuruyo

スコア74

test CHANGED
File without changes
test CHANGED
@@ -68,6 +68,8 @@
68
68
 
69
69
  マイナスやプラスデータはどの場所にあってもおかしくないです
70
70
 
71
+ マイナスデータ及びそれに対応したプラスデータは一種類とは限りません
72
+
71
73
 
72
74
 
73
75
  ---