質問編集履歴
4
内容の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -66,6 +66,42 @@
|
|
66
66
|
ccccc = t11111,t22222,t33333,t44444,t11111
|
67
67
|
```
|
68
68
|
|
69
|
+
|
70
|
+
以下は修正前と修正後のhogeファイルの内容となります。
|
71
|
+
IDリスト記載の行のみ抜粋(修復するIDを増やしています)
|
72
|
+
|
73
|
+
修正前hogeファイル(重複がある場合)
|
74
|
+
|
75
|
+
```
|
76
|
+
aaaaa = t11111,t22222,t33333,t44444,t55555
|
77
|
+
bbbbb = t11111,t22222,t33333,t44444,t55555
|
78
|
+
ccccc = t11111,t22222,t33333,t44444,t11111,t22222,t99999
|
79
|
+
```
|
80
|
+
|
81
|
+
|
82
|
+
修正後hogeファイル
|
83
|
+
|
84
|
+
```
|
85
|
+
aaaaa = t11111,t22222,t33333,t44444,t55555
|
86
|
+
bbbbb = t11111,t22222,t33333,t44444,t55555
|
87
|
+
ccccc = t11111,t22222,t33333,t44444,t99999
|
88
|
+
```
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
69
105
|
経験が浅く見当違いな質問でしたら申し訳ございません。
|
70
106
|
説明不足かとは思いますが、、、
|
71
107
|
ご意見、ご回答教えていただきますととても助かります。
|
3
内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,56 +1,71 @@
|
|
1
|
-
|
1
|
+
fooファイルで行いたい処理フロー
|
2
|
-
稀に重複したIDが追加されるため重複してるかしていないかの確認処理をfooで行いたい
|
3
2
|
|
4
|
-
・使用するファイルは2つあります。
|
5
|
-
①テキストファイルhoge(グループとIDが追加されていく)
|
6
|
-
②テキストファイルfoo(重複があるかないかを確認、あった場合hogeのバックアップを作成し、その後重複の処理を行う)
|
7
3
|
|
4
|
+
手順1.対処のフォルダにhogeファイルがあるかfooで確認する(以降はあった場合の手順となる)
|
8
|
-
|
5
|
+
.IDの初回登録の場合 受け取ったhogeファイルのの内容は以下になります。
|
6
|
+
```
|
9
|
-
|
7
|
+
1行目から20行目まではID以外の内容が記載されている。
|
8
|
+
IDがある行は21-23行に存在
|
10
9
|
|
10
|
+
# aaaaa = txxxxx,txxxxx
|
11
|
+
# bbbbb = txxxxx,txxxxx
|
12
|
+
# ccccc = txxxxx,txxxxx
|
13
|
+
|
14
|
+
24行以下にはID以外の内容が記載されている
|
11
15
|
```
|
12
|
-
aaaaa = y11111,y22222,y33333,y44444,y55555
|
13
|
-
bbbbb = u11111,u22222,u33333,u44444,u55555
|
14
|
-
ccccc = t11111,t22222,t33333,t44444,t11111
|
15
|
-
```
|
16
16
|
|
17
|
+
手順2.fooで初回のID登録か判断する(先頭に#があるとき初回登録扱い)
|
18
|
+
・先頭に#があればtrue
|
17
19
|
|
20
|
+
手順3.追加するIDがあるか確認する(手順2がfalseのときの処理)
|
21
|
+
・hogeファイルのグループとIDの行を取得
|
22
|
+
* IDを追加する場合 追加するIDがあるかの確認
|
23
|
+
・IDがリストにあればtrue
|
24
|
+
|
25
|
+
* IDを削除する場合 削除するIDがあるかの確認
|
26
|
+
・IDがリストになければtrue
|
18
27
|
|
28
|
+
手順4.手順2.3でファイルの内容を確認して内容を変更していくか判断する
|
29
|
+
・手順2がtrueもしくは 手順3がfalseの場合以降の手順を進める
|
30
|
+
・内容の変更がない場合はwarningを表示させて終了
|
19
31
|
|
20
|
-
|
32
|
+
手順5.hogeファイルの内容を変更する前に hoge.yyyyMMddHHmmSS.sssの形で同じ階層にバックアップを作成
|
21
|
-
```
|
22
|
-
#!bin/bash/foo
|
23
33
|
|
24
|
-
|
34
|
+
手順6.手順2でtrueだった場合初回登録とみなす
|
25
|
-
|
35
|
+
・IDを追加する前に先頭にある#と半角スペース =後ろにある txxxxx,txxxxxを削除し aaaaa=の状態にする
|
26
36
|
|
37
|
+
手順7.ここでIDリストの追加と重複削除処理を行う
|
38
|
+
* 手順3で受け取ったIDリストを配列に変更(カンマを半角スペースに変える)
|
39
|
+
* 変更した配列で削除追加処理を行う
|
40
|
+
* 追加削除した配列をカンマ区切りの文字列に戻す。
|
41
|
+
* 追加削除し終えた行をhogeファイルの元の行に置き換える
|
27
42
|
|
28
|
-
#変数cは ccccc = t11111,t22222,t33333,t44444,t11111
|
29
|
-
```
|
30
43
|
|
31
|
-
|
44
|
+
以上のフローを実行できればと思っています。
|
32
45
|
|
33
|
-
```
|
34
|
-
|
46
|
+
ーーーーーーーーーーーーーーーーーーーー
|
35
47
|
|
36
|
-
#hogeファイルの対象グループとIDリストを含む行を取得
|
37
|
-
c=$(cat hoge | head -3 | tail -1)
|
38
48
|
|
39
|
-
|
49
|
+
※初回登録かそうではないかのtrue falseは確認できる状態です※
|
40
|
-
↑
|
41
|
-
ここでつまづいています。
|
42
50
|
|
43
51
|
|
52
|
+
hogeが更新されるごとにグループが持つのIDが追加される
|
53
|
+
稀に重複したIDが追加されるため重複してるかしていないかの確認処理をfooで行いたい。
|
44
54
|
|
45
55
|
|
56
|
+
・使用するファイルは2つあります。
|
57
|
+
①テキストファイルhoge(グループとIDが追加されていく)
|
58
|
+
②テキストファイルfoo(重複があるかないかを確認、あった場合hogeのバックアップを作成し、その後重複の処理を行う)
|
46
59
|
|
47
|
-
|
60
|
+
・テキストファイルhogeの内容は以下(初回登録ではない場合)になります。
|
48
|
-
|
61
|
+
(例)グループ名 = ID,ID,ID,ID
|
49
|
-
#なければ,そのままwarningを表示して終了
|
50
62
|
|
51
63
|
```
|
64
|
+
aaaaa = t11111,t22222,t33333,t44444,t55555
|
65
|
+
bbbbb = t11111,t22222,t33333,t44444,t55555
|
66
|
+
ccccc = t11111,t22222,t33333,t44444,t11111
|
67
|
+
```
|
52
68
|
|
53
|
-
|
54
69
|
経験が浅く見当違いな質問でしたら申し訳ございません。
|
55
70
|
説明不足かとは思いますが、、、
|
56
71
|
ご意見、ご回答教えていただきますととても助かります。
|
2
説明内容の改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -36,6 +36,14 @@
|
|
36
36
|
#hogeファイルの対象グループとIDリストを含む行を取得
|
37
37
|
c=$(cat hoge | head -3 | tail -1)
|
38
38
|
|
39
|
+
if文を用意て変数cに重複文字列があるかないかの結果をだしたいです。
|
40
|
+
↑
|
41
|
+
ここでつまづいています。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
|
39
47
|
#次に重複があるかないかの確認
|
40
48
|
#あればhogeをバックアップして重複の削除
|
41
49
|
#なければ,そのままwarningを表示して終了
|
1
内容がわからないという意見をいただいたので修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,29 +1,48 @@
|
|
1
|
+
hogeが更新されるごとにグループが持つのIDが追加される
|
1
|
-
|
2
|
+
稀に重複したIDが追加されるため重複してるかしていないかの確認処理をfooで行いたい
|
2
3
|
|
3
4
|
・使用するファイルは2つあります。
|
4
|
-
①テキストファイルhoge(
|
5
|
+
①テキストファイルhoge(グループとIDが追加されていく)
|
5
|
-
②テキストファイルfoo(
|
6
|
+
②テキストファイルfoo(重複があるかないかを確認、あった場合hogeのバックアップを作成し、その後重複の処理を行う)
|
6
7
|
|
7
|
-
|
8
|
-
|
9
8
|
・テキストファイルhogeの内容は以下になります。
|
10
9
|
(例)グループ名 = ID,ID,ID,ID
|
11
10
|
|
12
|
-
|
11
|
+
```
|
13
|
-
|
14
12
|
aaaaa = y11111,y22222,y33333,y44444,y55555
|
15
13
|
bbbbb = u11111,u22222,u33333,u44444,u55555
|
16
14
|
ccccc = t11111,t22222,t33333,t44444,t11111
|
15
|
+
```
|
17
16
|
|
18
|
-
---------------------------------
|
19
|
-
以上の内容ですと
|
20
|
-
hogeファイルの3行目にあるグループ名cccccには「t11111」のIDが重複しているのが確認できます。
|
21
17
|
|
22
|
-
この行をテキストファイルfooに抽出し、[ccccc = ]の後ろから
|
23
|
-
重複する文字列があるかないかの確認処理を作成したいです。
|
24
|
-
重複チェックには正規表現を用意てマッチできればと思います。
|
25
18
|
|
26
19
|
|
20
|
+
* 手順1 fooにhogeのグループがある行をcatする実行コマンドを変数に代入して保管する。
|
21
|
+
```
|
22
|
+
#!bin/bash/foo
|
23
|
+
|
24
|
+
#hogeファイルの対象グループとIDリストを含む行を取得
|
25
|
+
c=$(cat hoge | head -3 | tail -1)
|
26
|
+
|
27
|
+
|
28
|
+
#変数cは ccccc = t11111,t22222,t33333,t44444,t11111
|
29
|
+
```
|
30
|
+
|
31
|
+
* 手順2 変数cの =の後ろにt11111の重複があります
|
32
|
+
|
33
|
+
```
|
34
|
+
#!bin/bash/foo
|
35
|
+
|
36
|
+
#hogeファイルの対象グループとIDリストを含む行を取得
|
37
|
+
c=$(cat hoge | head -3 | tail -1)
|
38
|
+
|
39
|
+
#次に重複があるかないかの確認
|
40
|
+
#あればhogeをバックアップして重複の削除
|
41
|
+
#なければ,そのままwarningを表示して終了
|
42
|
+
|
43
|
+
```
|
44
|
+
|
45
|
+
|
27
46
|
経験が浅く見当違いな質問でしたら申し訳ございません。
|
28
47
|
説明不足かとは思いますが、、、
|
29
48
|
ご意見、ご回答教えていただきますととても助かります。
|