我正在尝试过滤URL列表,其中某些URL在域名(.com或.pl ..etc)之后具有“ / ”字符。我正在尝试编写PowerShell脚本,以从URL中删除“ / ”之后的所有文本。
尝试以下脚本,但是没有用。
(Get-Content "C:\Work\url123.txt" -Raw) -replace "/" | Set-Content "C:\Work\url12.txt"
//这将删除“ /”字符并合并URL的
输入
www.xyz.com
www.abc.com/dummypage/login
www.123.com/login.php?
预期产量
www.xyz.com
www.abc.com
www.123.com
答案 0 :(得分:2)
如果您的URL不包含协议,则可以使用以下内容。
(Get-Content "C:\Work\url123.txt") -Replace "(.*?)/.*",'$1'
如果您希望列表中包含协议(URI和URL),则可以使用以下协议:
(Get-Content "C:\Work\url123.txt") -Replace ".*//|(.*?)/.*",'$1'
由于-Replace
运算符使用正则表达式,因此我将解释其语法。
.*//
:匹配所有字符,包括两个正斜杠。|
:替代字符(OR)(.*?)
:匹配尽可能少的字符(惰性匹配),并将其存储为捕获组1($1
)。/
:从字面上匹配正斜杠$1
:捕获组1。答案 1 :(得分:1)
您可以使用分割:
$a = "ffff/666666/iiii"
$b = $a.Split('/') #is an array with all the substrings separated by /
$b[0] # is the first element
结果:“ ffff”
一行:$b = $a.Split('/')[0]
因此代码应类似于:
(Get-Content "C:\Work\url123.txt" -Raw) | $_.split('/')[0] | Set-Content "C:\Work\url12.txt"