はじめに
WindowsのPowerShellでLinuxのようにgrepする方法について書きます。
そもそもgrepとは?
簡単に言うと、Linuxのファイルの行を検索するコマンドになります。
詳しくは下記ページをご覧下さい。
使用例
[root@tspweb01 network-scripts]# grep IPADDR ifcfg-enp0s8
IPADDR=192.168.56.30
[root@tspweb01 network-scripts]#
※コマンド実行前の状態
コマンド実行前
[root@tspweb01 network-scripts]# cat ifcfg-enp0s8
TYPE="Ethernet"
BOOTPROTO="none"
IPV6INIT="no"
NAME="enp0s8"
UUID="81d71b89-d1b6-4ca9-853d-c5bf74c8487e"
DEVICE="enp0s8"
ONBOOT="yes"
IPADDR=192.168.56.30
PREFIX=24
[root@tspweb01 network-scripts]#
PowerShellのgrep方法
実行コマンド
コマンド
<コマンド> | Out-String -Stream | Select-String <検索したい文字列>
使用例①
Get-NetFirewallProfileの実行結果から「Domain」の行を抽出
文字列抽出前
PS C:\Users\Administrator> Get-NetFirewallProfile
Name : Domain
Enabled : False
DefaultInboundAction : NotConfigured
DefaultOutboundAction : NotConfigured
AllowInboundRules : NotConfigured
AllowLocalFirewallRules : NotConfigured
AllowLocalIPsecRules : NotConfigured
AllowUserApps : NotConfigured
AllowUserPorts : NotConfigured
AllowUnicastResponseToMulticast : NotConfigured
NotifyOnListen : False
EnableStealthModeForIPsec : NotConfigured
LogFileName : %systemroot%\system32\LogFiles\Firewall\pfirewall.log
LogMaxSizeKilobytes : 4096
LogAllowed : False
LogBlocked : False
LogIgnored : NotConfigured
DisabledInterfaceAliases : {NotConfigured}
〜〜〜省略〜〜〜
PS C:\Users\Administrator>
文字列抽出結果
文字列抽出前
PS C:\Users\Administrator> Get-NetFirewallProfile | Out-String -Stream | Select-String Domain
Name : Domain
PS C:\Users\Administrator>
使用例②
test.txtの中から「test」の行を抽出
文字列抽出前
PS C:\Users\Administrator\Desktop> cat .\test.txt
aaaa
aaaa
test
vagfafa
fafeaea
iiaaaa
faejfajefa
文字列抽出結果
文字列抽出結果
PS C:\Users\Administrator\Desktop> cat .\test.txt | Out-String -Stream | Select-String "test"
test
PS C:\Users\Administrator\Desktop>
まとめ
下記コマンドで行を検索できる。
コマンド
<コマンド> | Out-String -Stream | Select-String <検索したい文字列>