CONTENT
こんにちわ、こんばんわ。
2024年が始まったかと思えばもう2月。。
あっという間に過ぎ去る時間に戦慄しておりますが、立春は過ぎたとてまだまだ寒暖差が激しいので皆様体調管理にはお気を付けください。
さて今回は、windows上で特定のワードで複数のプロジェクトの影響調査(GREP)をする際に、良く発生する作業だし毎回ハンドで検索かけていたら時間がいくらあっても足りないな。。。と思い、powershellで自動化する所に行きついたのでそのハックの共有となります。
例えば、
「AAAAAというワードを含むファイルを10プロジェクトすべて確認する。」
といった作業が発生した場合にLinuxユーザの人ならfindやらgrepやらを駆使して自動化すると思うのですが、powershellでもほぼ同等の操作が可能だったので私はここに行きつきました。
■検索
・sls
所謂、grepコマンド。Select-Stringのエイリアスとなっております。
■オプション
・Get-ChildItem
所謂、findライクなオプション
slsと組み合わせる事でサブフォルダまで再帰的(-rオプション)に一覧を取得してくれます。また、-Excludeオプションで不要な拡張子を一覧表示対象外にもできます。(*.exeとか*.classとかいらないですからね。。)
更に上記と合わせて、sedコマンドで列整形とヘッダ名称設定したいなといった事もpowershellでは以下のようにパイプでワンライナーで実現できて感動しました。
sls AAAAA(Get-ChildItem -File -r XXXXXX) -Exclude *.exe,*.class | { ( "プロジェクト名", "AAAAA", $_.Path, $_.Line ) - join "@"}
といったように普通に人力でやろうとしたらかなり時間がかかりそうな影響一覧を作成する作業が、powershellさんにお任せしてボタンポチで終らせられるようになって幸せになった話でした。上記で出力されたファイルをデリミタ"@"指定でExcelに張り付けて一覧作成がほぼ完了となりました!
以外と作業圧縮するような余地は色々な所に転がっていると思いますし、それを自動化する事でオーバーヘッドはかかるかもしれませんが、ランニングコストの面や自身のスキルアップにもつながる可能性もありますので是非!
今回のような一例に限らず皆様もご検討いただいてよきエンジニアライフをお過ごし下さいませ。
それでは皆様、暖かい春を心待ちに2024年も頑張っていきましょう!