powershell_特殊变量:$_ /ls 目录内文件列表排序显示 / where vs sls(select-string) vs grep/表达式中的模糊字符(通配字符串)

网友投稿 264 2022-09-26

powershell_特殊变量:$_ /ls 目录内文件列表排序显示 / where vs sls(select-string) vs grep/表达式中的模糊字符(通配字符串)

文章目录

​​reference​​

​​automatic variables reference​​​​special variable:`$_.`​​​​引用ls 的结果​​​​ls内容排序显示​​

​​where​​

​​获取属性的完整值​​​​表达式中的模糊字符(通配字符串)​​

​​使用-like参数​​​​自带筛选器的cmdlet​​

​​select-string​​

​​多目录多文件中搜索​​​​在管道符中使用sls​​

​​grep​​

reference

​​link​​

automatic variables reference

​​about Automatic Variables - PowerShell | Microsoft Docs​​

special variable:​​$_.​​

​​reference link​​

Get-Process | ForEach-Object {$_.ProcessName}

引用ls 的结果

ls内容排序显示

例如按访问时间

ls * | sort {$_.LastaccessTime}

where

​​where​​​ & ​​$_​​

​​$_​​​经常使用在管道符中,作为前一个变量的输出对象来作为下一个命令的输入(您可以从中提取需要的属性完成一定的逻辑) 譬如,在作为筛选工具对象的​​​where-object​​​的值表达式中经常会用的​​$_​​

Get-Process | Where-Object {$_.ProcessName -eq ‘dllhost’}

为了提取合适的字段,您或许需要利用其他cmdlet(​​format-list​​​(简写为​​fl​​​)/​​get-member​​​(​​gm​​)来获取准确的字段.

获取属性的完整值

​​format-table​​​(​​ft​​)可以获取变量的简写值​​format-list​​​(​​fl​​)可以获取变量的完整值

​​select​​ 也可以获取指定变量的完整的值

表达式中的模糊字符(通配字符串)

使用-like参数

​​about Wildcards - PowerShell | Microsoft Docs​​ 这可以让where命令更加好用

自带筛选器的cmdlet

某些cmdlet自带筛选器,自带筛器一般具有更好的性能

SYNOPSIS Selects objects from a collection based on their property values. --------------- Example 1: Get stopped services --------------- Get-Service | Where-Object {$_.Status -eq "Stopped"} Get-Service | where Status -eq "Stopped" -------- Example 2: Get processes based on working set -------- Get-Process | Where-Object {$_.WorkingSet -GT 250MB} Get-Process | Where-Object WorkingSet -GT (250MB) -------- Example 3: Get processes based on process name -------- Get-Process | Where-Object {$_.ProcessName -Match "^p.*"} Get-Process | Where-Object ProcessName -Match "^p.*"

除了​​$_​​​可以帮助用来构建脚本块表达式来辅助where 执行筛选 还有​​​select-string​​这个十分有用的cmdlet

select-string

缩写别名为​​sls​​

​​Select-String (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Docs​​

​​reference link2​​ 实例代码:

生成演示素材文件:`Alias.txt` /`Command.txt`Get-Alias | Out-File -FilePath .\Alias.txtGet-Command | Out-File -FilePath .\Command.txt# 利用sls进行多文件同时查找Select-String -Path .\*.txt -Pattern 'File'

处理从文件中刷选满足条件的行,也可以通过管道符来使用​​sls​​​ sls相比于​​where​​更加灵活,也更加强大

多目录多文件中搜索

在管道符中使用sls

某种程度上进一步实现了​​grep​​的一些效果.

grep

​​grep​​​是基于文本流的筛选工具 只需要考虑文本正则表达式的编写即可使用 但是在某些时候grep很管用(很方便) 在powershell中,可以通过安装第三方工具实现grep(当然用法于Linux上的有所区别 (可以通过​​​scoop​​搜索相关工具并安装)

PS C:\Users\cxxu_11> scoop search grep'main' bucket: busybox (4487-gd239d2d52) --> includes 'egrep' gettext (0.21-v1.16) --> includes 'msggrep.exe' gow (0.8.0) --> includes 'egrep.exe' grep (2.5.4) nim (1.6.0) --> includes 'nimgrep.exe' pcregrep (10.20) ripgrep (13.0.0) rktools2k3 (1.0) --> includes 'qgrep.exe' ugrep (3.3.8) unxutils (2007.03.01) --> includes 'agrep.exe'

例如,可以安装第一个工具箱,内部就包含有grep工具

PS C:\Users\cxxu_11> printenv | grep apps -iCPwindowsApps=C:\Program Files\windowsAppsoneNote10Home=C:\Program Files\windowsApps\Microsoft.Office.OneNote_16001.14326.20458.0_x64__8wekyb3d8bbwePath=D:\Program Files\PowerShell\7;C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.9.1942.0_x64__8wekyb3d8bbwe;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:计网_cisco packet tracer_设备配置(GUI/CLI)联动配置_静态路由配置为例.
下一篇:马斯克:特斯拉上海超级工厂未来年产量将达100万辆!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~