teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

内容の追加

2020/11/03 07:54

投稿

rookieman
rookieman

スコア2

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

内容の修正

2020/11/03 07:54

投稿

rookieman
rookieman

スコア2

title CHANGED
File without changes
body CHANGED
@@ -1,56 +1,71 @@
1
- hogeが更新されるごとにグループが持つのIDが追加される
1
+ fooファイで行いたい処理フロ
2
- 稀に重複したIDが追加されるため重複してるかしていないかの確認処理をfooで行いたい
3
2
 
4
- ・使用するファイルは2つあります。
5
- ①テキストファイルhoge(グループとIDが追加されていく)
6
- ②テキストファイルfoo(重複があるかないかを確認、あった場合hogeのバックアップを作成し、その後重複の処理を行う)
7
3
 
4
+ 手順1.対処のフォルダにhogeファイルがあるかfooで確認する(以降はあった場合の手順となる)
8
- ・テキストファイルhogeの内容は以下になります。
5
+   .IDの初回登録の場合 受け取ったhogeファイルの内容は以下になります。
6
+ ```
9
- (例)グループ名 = ID,ID,ID,ID
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
- * 手順1 fooにhogeのグープがある行catする実行コマンドを数に代入して保管する
32
+ 手順5.hogeファイの内容を変する前に hoge.yyyyMMddHHmmSS.sssの形で同じ階層にバックアップを作成
21
- ```
22
- #!bin/bash/foo
23
33
 
24
- #hogeファイルの対象グループIDリストを含む行を取得
34
+ 手順6.手順2でtrueだった場合初回登録みなす
25
- c=$(cat hoge | head -3 | tail -1)
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
- * 手順2 変数c =の後ろにt11111の重複があります
44
+ 以上フローを実行できればと思っています
32
45
 
33
- ```
34
- #!bin/bash/foo
46
+ ーーーーーーーーーーーーーーーーーーーー
35
47
 
36
- #hogeファイルの対象グループとIDリストを含む行を取得
37
- c=$(cat hoge | head -3 | tail -1)
38
48
 
39
- if文を用意て変数cに重複文字列があるかないかの結果をだしたいです
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
- #あればhogeをバックアッして重複の削除
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

説明内容の改善

2020/11/03 06:38

投稿

rookieman
rookieman

スコア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

内容がわからないという意見をいただいたので修正

2020/11/02 05:34

投稿

rookieman
rookieman

スコア2

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(指定した1行を抽出し、その行に重複している文字列があるかないかを確認するファイル
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
  ご意見、ご回答教えていただきますととても助かります。