質問編集履歴
3
syuusei
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
現状困っている点を具体的に追記
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
修正
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
|
---
|