首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Select-String时忽略字符

使用Select-String时忽略字符
EN

Stack Overflow用户
提问于 2018-09-06 00:29:45
回答 2查看 668关注 0票数 2

我在文本文件中查找包含特定字符的字符串;我使用

代码语言:javascript
复制
Select-String -Path clm-server-test.txt -Pattern "#(S****)"

我只想获取与模式匹配的字符,但它还返回该字符串之前和之后的字符。

例如:

我有一个注册集,它以

代码语言:javascript
复制
S32145 thomas
S12345 bedro
S09867 stephane

使用Select-String命令,我希望它显示所有的S ***单词,而不是名称。

EN

回答 2

Stack Overflow用户

发布于 2018-09-06 00:54:42

默认情况下,

代码语言:javascript
复制
- `"#(S****)"` is _not a valid regex_ (it looks more like a _wildcard expression_, except that you'd use `?` to match a single character).
- To match just the tokens that start with `S` followed by 5 digits, use `S\d{5}`, or, to match any number of digits, use `S\d+`, as [TheIncorrigible1](https://stackoverflow.com/users/8188846/theincorrigible1) suggests.

还可以将正则表达式优化为仅在单词边界(\b)处匹配:'\bS\d{5}\b'

将所有这些放在一起:

代码语言:javascript
复制
Select-String -Path clm-server-test.txt -Pattern '\bS\d{5}\b' | 
  ForEach-Object { $_.Matches[0].Value }

对于您的示例输入,这将产生以下结果:

代码语言:javascript
复制
S32145
S12345
S09867 

顺便说一句:从上面的命令可以明显看出,Select-String目前并不能轻松地仅提取输入行的匹配部分。

如果您有兴趣引入一个开关来简化这一点,请访问participate in the discussion on GitHub

票数 3
EN

Stack Overflow用户

发布于 2018-09-07 00:19:30

谢谢你的回答,事实上,你的命令让我更接近预期的结果,除了这一点,我希望他给我返回以"S *“开头的单词,直到现在,在所有我想要避免的事情上。

我想让他给我看"S7676583“这个号码

非常感谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52189780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档