如下说明是翻译
: help Select-String
产生的帮助信息
.
译者
: Edengundam(
马涛
)
Select-String
大纲
选择匹配模式的子字符串
.
语法
Select-String [-pattern] <string[]> -inputObject <psobject> [-include <string[]>] [-exclude <string[]>] [-simpleMatch] [-caseSensitive] [-quiet] [-list] [<CommonParameters>]
Select-String [-pattern] <string[]> [-path] <string[]> [-include <string[]>] [-exclude <string[]>] [-simpleMatch] [-caseSensitive] [-quiet] [-list] [<CommonParameters>]
详细描述
选择匹配模式的子字符串
.
默认情况下
, Select-String
将参数
Pattern
的值作为正则表达式
,
并应用于输入
.
要学习更多
Windows PowerShell
中的正则表达式
,
请键入
get-help about_regular_expression.
你可以通过使用参数
SimpleMatch
来禁止正则表达式匹配
.
简单匹配
(SimpleMatch)
在输入中进行子字符串检索
,
子字符串来自参数
Pattern.
此命令对搜索文件中的字符串进行了简化
.
包含了支持通配符的参数
Path,
当此参数指定时
,
涉及的文件内容将会根据参数
Pattern
的只进行匹配
.
默认情况下
,
此命令的输出是
MatchInfo
对象
,
该对象包含了匹配的详细信息
.
当输入来自文件时这些信息更加重要
.
对象包含了像文件名
(Filename)
和行号
(Line)
的属性信息
,
当输入不是来自文件时
,
此值为
'InputStream'.
你可以指定参数
Quiet
来禁止
MatchInfo
对象的产生
.
这种情况下
,
命令的输出结果为布尔类型
,
当匹配成功时
,
返回
True,
否则返回
False.
当对文件进行匹配时
,
你可以指定参数
List
使命令在处理每个文件时当遇到第一匹配后立即停止
.
如果你只需要一个匹配即可
,
那么你应该使用这个参数
,
因为这将会提高此命令的速度
.
参数
-pattern <string[]>
指定字符串货正则表达式作为匹配的标准
.
要学习更多
Windows PowerShell
中的正则表达式
,
请在
Windows PowerShell
命令提示符中键入
get-help about_regular_expression.
强制参数
?
|
true
|
参数位置
?
|
1
|
默认值
|
Null
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
true
|
-path <string[]>
指定匹配文件的路径
,
允许使用通配符
.
强制参数
?
|
true
|
参数位置
?
|
2
|
默认值
|
null
|
允许从管道绑定输入
?
|
true (
根据属性名
)
|
允许通配符扩展
?
|
true
|
-include <string[]>
只包含指定的项目
.
此参数值用于限定
Path
参数
.
输入一个路径元素或模式
,
例如
"*.txt"
(
此参数允许通配符
)
.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
true
|
-exclude <string[]>
排除指定的项目
.
此参数值用于限定
Path
参数
.
输入一个路径元素或模式
,
例如
"*.txt"
(
此参数允许通配符
)
.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
true
|
-simpleMatch <SwitchParameter>
指定进行简单匹配
,
而不是正则表达式匹配
.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-caseSensitive <SwitchParameter>
匹配时区分大小写
.
默认情况下匹配时不区分大小写
.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-quiet <SwitchParameter>
抑制命令的大部分输出
.
当指定此参数时
,
只有一个布尔值将会沿着管道被传送
.
如果匹配成功返回
True,
否则返回
False.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-list <SwitchParameter>
指定每个输入文件只返回一个匹配
.
返回的
MatchInfo
对象只包含第一次匹配的信息
.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-inputObject <psobject>
为命令指定输入的对象
.
输入一个包含对象的变量
,
或者一个能够产生对象的命令或表达式
.
强制参数
?
|
true
|
参数位置
?
|
named
|
默认值
|
AutomationNull.Value
|
允许从管道绑定输入
?
|
true (
根据值
)
|
允许通配符扩展
?
|
false
|
<
公共参数
>
此命令支持公共参数
: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable.
更多信息
,
输入
, "get-help about_commonparameters".
输入类型
对象或文件
.
返回类型
如果指定参数
Quiet
将会返回布尔类型来提示匹配是否成功
.
否则
,
输出将会是零个或多个
MatchInfo
对象
,
每个对象包含如下属性
:
·
忽略大小写
(IgnoreCase):
布尔类型
·
行号
(LineNumber):
整型
(0
表示输入不是文件
)
·
匹配行
(Line):
字符串
·
文件名
(FileName):
字符串
("InputStream"
表示输入不是文件
)
·
路径
(Path):
字符串
("InputStream"
表示输入不是文件
)
·
模式
(Pattern):
实际匹配的字符串
·
原始对象
(OriginalObject):
处理的对象
注意
Select-String
很像
Unix
工具
'grep'
以及
Windows
工具
'findstr'.
Select-String
使用当前线程的区域性设置进行匹配
.
你可以使用
Get-Culture
cmdlet
来确定当前的区域性设置
.
要查看
MatchInfo
对象的全部属性
,
键入
: select-string -path test.txt -pattern "test" | get-member | format-list -property *.
例
1
C:/PS>"Hello","HELLO" | select-string -pattern "HELLO" -casesensitive
此命令对于输入
"Hello"
和
"HELLO",
使用模式
"HELLO"
执行大小写敏感匹配
.
HELLO
例
2
C:/PS>select-string -path *.xml -pattern "the the"
此命令搜索当前目录中包含
.xml
扩展名的全部文件
,
并显示包含
"the the"
的行
.
例
3
C:/PS>$events = get-eventlog -logname application -newest 100
$events | select-string -inputobject {$_.message} -pattern "failed"
此命令从应用事件日志中取得最后
100
项
,
并存储到变量
$events
中
.
然后将通过对象传递给
Select-String
并为参数
InputObject
指定了求值的脚本块
.
脚本块同使用
$_
访问每个管道中的对象并从
EventLogEntry
对象上获取
message
属性
.
属性
message
包含的字符串作为输入传递给
Select-String,
用字符串
"failed"
进行匹配
.
任何匹配的信息将被输出到控制台上
.
例
4
C:/PS>get-childitem c:/windows/system32/* -include *.txt -recurse |
select-string -pattern "Microsoft" -casesensitive
此命令检查位于目录
C:/Windows/System32
及其子目录中
,
所有扩展名为
.txt
的文件的
"Microsoft"
字符串
.
参数
CaseSensitive
指出
'Microsoft'
的
'M'
必须是大写
,
并且其余字符必须是小写才能够被匹配
.
相关链接
about_comparison_operators
about_regular_expression