Powershell 如何删除空格并仅显示文本(如awk)?

Powershell 如何删除空格并仅显示文本(如awk)?,powershell,awk,Powershell,Awk,有一个Linux脚本正在获取docker卷并显示卷匹配字符串 docker volume ls | grep -i $volname | awk '{print $2}' 我需要将此脚本转换为在windows环境下工作。所以PowerShell是我的选择选择字符串的工作方式或多或少类似于grep docker volume ls | Select-String $volname 但是在PowerShell中没有与awk等价的东西。因此,我尝试使用空格进行拆分: $volList = do

有一个Linux脚本正在获取docker卷并显示卷匹配字符串

docker volume ls | grep -i $volname | awk '{print $2}'
我需要将此脚本转换为在windows环境下工作。所以PowerShell是我的选择<代码>选择字符串的工作方式或多或少类似于
grep

docker volume ls | Select-String $volname 
但是在PowerShell中没有与awk等价的东西。因此,我尝试使用空格进行拆分:

 $volList = docker volume ls |
            Select-String "winvolume" |
            foreach { $_ -split " " }

但是它在数组中有许多空元素(13个空元素)。我需要删除所有的空元素,只有文本元素。如何在PowerShell中实现这一点?

选择字符串
生成
匹配信息
对象,您需要首先从中展开相关信息。请改用PowerShell操作符

((docker volume ls) -match $volname -split ' +')[1]

在表达式
'+'
处拆分将连续空格视为单个分隔符,就像
awk
那样。

选择字符串
生成
匹配信息
对象,您需要首先从中展开相关信息。请改用PowerShell操作符

((docker volume ls) -match $volname -split ' +')[1]

表达式
'+'
处的拆分将连续空格视为单个分隔符,就像
awk
一样。

一个选项是以稍微不同的方式使用
-split
运算符。例如,对于此字符串:

“此字符串中有很多空格”

通过这样做,您只能获得“单词”:

-split“此字符串中有很多空格”

其中:

this
string
has
lots
of
spaces
in
it
因此,在您的情况下,您的代码是:

 $volList = docker volume ls |
            Select-String "winvolume" |
            foreach { -split $_ }

一个选项是以稍微不同的方式使用
-split
运算符。例如,对于此字符串:

“此字符串中有很多空格”

通过这样做,您只能获得“单词”:

-split“此字符串中有很多空格”

其中:

this
string
has
lots
of
spaces
in
it
因此,在您的情况下,您的代码是:

 $volList = docker volume ls |
            Select-String "winvolume" |
            foreach { -split $_ }

另一种方法是使用
convertfromstring

docker volume ls | Select-String winvolume | ConvertFrom-String | ForEach-Object P2
它有一个别名:

docker volume ls | sls winvolume | cfs | % P2

请注意,如果文本包含小数,它们将被四舍五入。因此,最好不要在脚本中使用另一种方法是使用
convertfromstring

docker volume ls | Select-String winvolume | ConvertFrom-String | ForEach-Object P2
它有一个别名:

docker volume ls | sls winvolume | cfs | % P2

请注意,如果文本包含小数,它们将被四舍五入。因此,最好不要在脚本中对拆分主题使用。
.split()
字符串方法具有拆分选项。其中之一是
删除mptyentries
。[grin]在拆分主题上,
.split()
string方法具有拆分选项。其中之一是
删除mptyentries
。[咧嘴笑]