PowerShellメモその2

何とか1行で書いて、そのファイルの特定の部分のみを変換する処理が出来ないかなーと考えている。
PowerShellクックブックでは、一度Get-Contentで配列に取得した後にSet-Contentで変更するという処理をしていた。
具体的にはこんな感じ

$content = Get-Content hoge.txt

# 何かの処理
# 例えば行単位で簡単な置換を書けるのであれば、-creplaceを使う、など
# $content = $content -creplace 'A', 'B'

$content | Set-Content hoge.txt

これをパイプラインで1行で出来ないか考えてみた。
ただ、あいかわらず良い考えが出てこないし、コマンドもろくに調べず手当たり次第にやっているので、良いコマンドがあったら教えてくれると嬉しいです。

[訂正前](実行可能)
cat hoge.txt | ?{ $exe = $_ -eq ''; $true} | %{ if($exe){ "(EMPTY LINE)" }else{ $_ } }
[訂正後](実行可能)
cat hoge.txt | %{ if($_ -eq ''){ "(EMPTY LINE)" }else{ $_ } }

?(where)で比較演算のみをしてしまうと、その比較をパスするもののみが次に流れるので、強制的に$trueを指定して全ての行を次に流す。
ある条件に指定したか否か(ここでは、行が空行であるかを判定)をforeachの中で判定し、条件を満たしている場合に、文字列を変化させるという処理を行っている。条件を満たさない場合は、流れてきたものをそのまま出力すればよい。
ここでもifとか使わずに、Cなどの条件演算子みたいに、

# 注:エラーコード。実際には動きません。
cat aaa.txt | %{ ($_ -eq '') ? "(EMPTY LINE)" : $_ }

とか出来るとよかったのだけれど、どうもこの条件演算子は調べた限りでは存在しない模様。
絶対何かあると思うんだけれど、現在の作業により調べてる時間も無いので一応動くコードで満足しているけれど、これ綺麗に書けないかなぁ……


補足&to id:bleis-tift
なんかログイン状態でコメント欄に入れないのでこちらで。
はい、その通りです。寝ぼけた頭で考えていたので、起きて記事を読み直してその書き方に気づきました。
個人的にifを使わずに書きたかっただけなのですが・・・標準機能では無理なのかなぁ。