yutadekopon のすべての投稿

powershellでキーワードにマッチしない行を表示したい

powershellでキーワードにマッチしない行を表示したい

-matchでマッチする行の表示は以下で表示できた。

(get-content c:\Windows\System32\drivers\etc\hosts)|
foreach{if($_ -match "127.0.0.1 milk2015.mobi"){$matches}}

マッチしない場合の表示はどうやるのか?

 

-cmatchというものあるようだ。

大文字と小文字を区別するとのこと。

さらにしらべてたらContainsというメソッドがある。

これは指定した文字が含まれていればtrueを返すメソッドです。

以下のように変更しました。


(get-content c:\Windows\System32\drivers\etc\hosts)|
foreach{if(!$_.Contains("milk2015")){$_}}

 

!$_.Contains(“milk2015″)

の部分の先頭に

“!”をつけているので否定になってます。

すなわち、milk2015が含まれない行を抽出するようです。

 

実際にコマンドを実行し

ファイルからmilk2015以外の行の抽出はできました。

 

 

とりあえず、3パターンでためした。


#含む
(get-content c:\Windows\System32\drivers\etc\hosts)|
foreach{if($_.Contains("milk2015")){$_}}

#含まない
(get-content c:\Windows\System32\drivers\etc\hosts)|
foreach{if(!$_.Contains("milk2015")){$_}}

#含まない、log.txtに書き込み
(get-content c:\Windows\System32\drivers\etc\hosts)|
foreach{if(!$_.Contains("milk2015")){$_}} > log.txt