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