質問編集履歴

3

文書の追加

2021/07/26 08:29

投稿

kty_kk
kty_kk

スコア4

test CHANGED
File without changes
test CHANGED
@@ -54,17 +54,25 @@
54
54
 
55
55
 
56
56
 
57
- #greplist=関数名を記載し事前準備(今回だとsprintfのみ)
57
+ #greplist=検索したい関数名を記載し事前準備(今回だとsprintfのみ)
58
58
 
59
59
 
60
+
61
+ #対象ファイル一覧取得
60
62
 
61
63
  find `pwd` -mindepth 2 -a -type f >checklist.txt
62
64
 
63
65
 
64
66
 
67
+ #対象ファイル内ループ(checklist.txt)
68
+
69
+ ####対象ファイル一覧からgreplistに記載されている関数名が使われている箇所を検索し、全て出力(grefunction.txtに)#########
70
+
65
71
  while read line;do
66
72
 
67
73
 
74
+
75
+  #事前用意した関数名一覧内をループ(greplist.txt)
68
76
 
69
77
  while read key;do
70
78
 
@@ -80,15 +88,25 @@
80
88
 
81
89
  done<checklist.txt
82
90
 
91
+ #################################################################################################################
83
92
 
93
+
94
+
95
+ #上記で出力したgrefunction.txt内の、sprintf(~,~,~)の第一引数を取得し、一覧化
84
96
 
85
97
  awk '-F[(,]' '{print $2} grefunction.txt>arg.txt
86
98
 
87
99
 
88
100
 
101
+ #第一引数を一覧化したもの(arg.txt)から、重複を削除するためにuniqを使用
102
+
89
103
  sort arg.txt | uniq>hensu.txt
90
104
 
91
105
 
106
+
107
+ #対象ファイルループ(hensu.txt)
108
+
109
+ ###重複削除した第一引数一覧を$sargとし、$sargが使われている箇所を全て出力
92
110
 
93
111
  while read sarg;do
94
112
 
@@ -107,3 +125,13 @@
107
125
 
108
126
 
109
127
  ```
128
+
129
+
130
+
131
+ やりたいこととしては、
132
+
133
+ ①対象配下で使われているsprintf関数を全て取得
134
+
135
+ ➁sprintfの第一引数を全て取得しリスト化(重複は削除)
136
+
137
+ ③第一引数を対象配下に対し再度抽出する。(同様の第一引数名が様々なところで使用されているため)

2

ソース記載

2021/07/26 08:29

投稿

kty_kk
kty_kk

スコア4

test CHANGED
File without changes
test CHANGED
@@ -41,3 +41,69 @@
41
41
  >awk '-F[(,]' '{print $2}' test,txt
42
42
 
43
43
  →こちらを変化させて取得できる方法はありませんでしょうか。
44
+
45
+
46
+
47
+ 【補足】
48
+
49
+
50
+
51
+ ●現ソース
52
+
53
+ ```bash
54
+
55
+
56
+
57
+ #greplist=関数名を記載し事前準備(今回だとsprintfのみ)
58
+
59
+
60
+
61
+ find `pwd` -mindepth 2 -a -type f >checklist.txt
62
+
63
+
64
+
65
+ while read line;do
66
+
67
+
68
+
69
+ while read key;do
70
+
71
+
72
+
73
+ grep -wsh $key $line >>grefunction.txt
74
+
75
+
76
+
77
+ done<greplist.txt
78
+
79
+
80
+
81
+ done<checklist.txt
82
+
83
+
84
+
85
+ awk '-F[(,]' '{print $2} grefunction.txt>arg.txt
86
+
87
+
88
+
89
+ sort arg.txt | uniq>hensu.txt
90
+
91
+
92
+
93
+ while read sarg;do
94
+
95
+
96
+
97
+ cd($dirname $0)
98
+
99
+ grep -wnsr $sarg ./* >>totalcheck.txt
100
+
101
+
102
+
103
+ done<hensu.txt
104
+
105
+
106
+
107
+
108
+
109
+ ```

1

誤字の修正

2021/07/26 08:20

投稿

kty_kk
kty_kk

スコア4

test CHANGED
File without changes
test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
  例)
32
32
 
33
- ・sprintf ( (abc)abcd,~~)
33
+ ・sprintf ( (abc)abcd,~,~)
34
34
 
35
35
 
36
36