首页 > 解决方案 > 如何删除空格并仅显示文本(如 awk)?

问题描述

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

docker volume ls | grep -i $volname | awk '{print $2}'

我需要将此脚本转换为在 Windows 环境中工作。所以PowerShell是我的选择。Select-String或多或少像grep.

docker volume ls | Select-String $volname 

awk但在 PowerShell中没有等价物。所以我尝试使用空格进行拆分:

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

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

标签: powershellawk

解决方案


Select-String生成MatchInfo对象,您需要首先从中扩展相关信息。请改用 PowerShell 运算符。

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

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


推荐阅读