PowerShell删除URL列表中特殊字符后的文本

时间:2019-05-20 10:17:50

标签: powershell

我正在尝试过滤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

2 个答案:

答案 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"