Powershell CSV キーワードで行抽出 フィルター 複数列

続きますよw
自分が迷ったとき、どこでも見られるように載せています

Powershellで効率化シリーズ
CSV 指定した列を削除したい
CSVでダブルクォーテーションを除いて出力

今回は

CSVのカラムの中から、キーワードを含む行を抽出する

(結果はファイルexport)

データーベースのヘッダーがA1,A2,A3,~A25まで続くとして
A4の列から、博多、箕面、呉を3つ抽出したい

単語そのものではなく、広島県呉市など、含まれる中からワード「呉」で行を抽出したい場合

正規表現を使うと簡単
| Where-Object { ($_.A4 -match '.*博多.*|.*箕面.*|.*呉.*')}
A4という場所にある博多、箕面、呉を含む(match)行を出してくれる命令

「.*」はその前後も探す
「|」が or を意味する

ちなみに、「含む」ではなく、そのものを抽出するときは
(例えば、日本、イタリア、メキシコ、などスパッとした情報)

-match マッチではなく
イコール の「-eq」を使う、その時「.*」は必要ない

列をまたいで抽出したい場合

1つ列 A4で博多、箕面、呉を抽出し、
2個目の列は、A10で「(500)」を含む行を抽出したい場合

例えばA10に
|abc(500)ee
|pew(500-2)rer
|bgu(500)

といういろんなのが入っていて、(500)を含む行だけを抽出したいという時です

今度は厄介な「記号入り」のデータが含まれる場合です

| Where-Object { ($_.A4 -match '.*博多.*|.*箕面.*|.*呉.*') -and ($_.A10 -match '.*\(500\).*')}
1行の命令文なので、続くよということで  -and
あとは繰り返しで、今度は列A10なので ($_.A10 -match

‘この中身’ → .*\(500\).*
かっこ記号の前にある斜めの棒「\」何よ!って思いますよね

半角記号、かっこはコマンドでも使用するので、
ただの文字ですよということを「\」で教えてあげる、逃がすための記号が[\]

今までこの作業を、
表計算ソフトでCSVを読み込み、新しいシートを作り、フィルタ抽出して貼り付け先を指定
古いシートを消して、という地道な作業をしていた私
本当にPowershellありがてぇ(再)

ソースは色んな情報を検索しながらつなぎ合わせたので、これというページはなく
ぱっと分ったのがこちらだったと思う
PowershellによるCSVファイルからのデータ抽出:heboDJ.net
あとは知恵袋も見たしwいつものhttps://stackoverflow.com/やhttps://learn.microsoft.comも見た