①test.txt
spinrtf(●●,△△,××)
sprintf(◆◆,■■,▼▼)
・・・
・・・
上記の様にリスト化されたsprintf関数に使用されている第一引数を取得するために下記をシェル内に記載しています。
bash
1awk '-F[(,]' '{print $2}' test,txt
しかし、第一引数にカンマ、スペース、括弧が更にある場合取得できず困っています。
例)
・sprintf ( (abc)abcd,~,~)
上記例の様な場合、 『 (abc)abcd』を取得したいです。
>awk '-F[(,]' '{print $2}' test,txt
→こちらを変化させて取得できる方法はありませんでしょうか。
【補足】
●現ソース
bash
1 2#greplist=検索したい関数名を記載し事前準備(今回だとsprintfのみ) 3 4#対象ファイル一覧取得 5find `pwd` -mindepth 2 -a -type f >checklist.txt 6 7#対象ファイル内ループ(checklist.txt) 8####対象ファイル一覧からgreplistに記載されている関数名が使われている箇所を検索し、全て出力(grefunction.txtに)######### 9while read line;do 10 11 #事前用意した関数名一覧内をループ(greplist.txt) 12 while read key;do 13 14 grep -wsh $key $line >>grefunction.txt 15 16 done<greplist.txt 17 18done<checklist.txt 19################################################################################################################# 20 21#上記で出力したgrefunction.txt内の、sprintf(~,~,~)の第一引数を取得し、一覧化 22awk '-F[(,]' '{print $2} grefunction.txt>arg.txt 23 24#第一引数を一覧化したもの(arg.txt)から、重複を削除するためにuniqを使用 25sort arg.txt | uniq>hensu.txt 26 27#対象ファイルループ(hensu.txt) 28###重複削除した第一引数一覧を$sargとし、$sargが使われている箇所を全て出力 29while read sarg;do 30 31 cd($dirname $0) 32 grep -wnsr $sarg ./* >>totalcheck.txt 33 34done<hensu.txt 35 36
やりたいこととしては、
①対象配下で使われているsprintf関数を全て取得
➁sprintfの第一引数を全て取得しリスト化(重複は削除)
③第一引数を対象配下に対し再度抽出する。(同様の第一引数名が様々なところで使用されているため)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/27 06:50