[玩转系统] PowerShell 从输出中删除标头 [5 种方法]
作者:精品下载站 日期:2024-12-14 05:31:14 浏览:14 分类:玩电脑
PowerShell 从输出中删除标头 [5 种方法]
对于本文,我们将使用 CSV 文件,您可以使用自己的文件,但我们将使用包含以下数据的 inputFile.csv
:
inputFile.csv 文件的内容:
FirstName,LastName,Department
Shruti,Mehta,Computer Science
Mehvish,Ashiq,Mathematics
John,Christopher,Psychology
Saira,Daniel,Humanities
Gurmeet,Kaur,Arts
从导入的数据中删除标头
在 PowerShell 中进一步处理之前,我们可以使用各种方法从导入的数据中删除标头。下面我们就来学习一下它们。
使用 -HideTableHeaders
参数
使用 -HideTableHeaders
参数从 PowerShell 中导入的数据中删除标头。
使用 -HideTableHeaders 参数:
$inputData = Import-Csv -Path "E:/Test/inputFile.csv"
$dataWithoutHeader = $inputData | Format-Table -HideTableHeaders
echo "Data with Header:", $inputData
echo "`nData without Header:", $dataWithoutHeader
输出 :
Data with Header:
FirstName LastName Department
--------- -------- ----------
Shruti Mehta Computer Science
Mehvish Ashiq Mathematics
John Christopher Psychology
Saira Daniel Humanities
Gurmeet Kaur Arts
Data without Header:
Shruti Mehta Computer Science
Mehvish Ashiq Mathematics
John Christopher Psychology
Saira Daniel Humanities
Gurmeet Kaur Arts
我们使用 Import-Csv cmdlet 导入使用 -Path
参数指定的给定 CSV 文件 (inputFile.csv
) 的内容。 Import-Csv
cmdlet 创建了类似表格的自定义对象,行中的项目成为属性值。
此 cmdlet 适用于任何 CSV 文件,包括使用 Export-Csv
cmdlet 生成的文件。请记住,我们可以省略 -Path
参数并指定文件路径而不使用此参数名称。
我们将读取的数据存储在 $inputData 变量中,该变量通过管道传输到 Format-Table cmdlet 以将输出格式化为表格。我们使用此 cmdlet 和 -HideTableHeader
参数来隐藏输出表中的标头,并将其存储在 $dataWithoutHeader
变量中。最后,我们使用 echo
命令来显示带/不带标题的数据。
请注意,Format-Table
cmdlet 的 -HideTableHeaders
参数不会删除/移除标头,而仅隐藏标头在输出控制台中的显示。这就是为什么在 Data without Header:
字符串和没有 header 的输出表之间有足够的空间;请参阅上面的输出。
如果您不想用空格代替标题,可以使用 Out-String cmd 和 trim() 方法。
使用 -HideTableHeaders 参数:
$inputData = Import-Csv -Path "E:/Test/inputFile.csv"
$dataWithoutHeader = ($inputData | Format-Table -HideTableHeaders| Out-String).trim()
echo "Data without Header:", $dataWithoutHeader
值得注意的是,Format-Table
cmdlet 主要用于格式化输出控制台中的数据;如果要将输出数据导出到 CSV 文件,不建议使用它。同样,您使用的是 Export-Csv
还是 Set-Content
cmdlet 并不重要。为什么?
原因是,如果您使用 Format-Table
并将输出数据导出到 CSV 文件,您可能会得到扭曲或意外的数据,因为 Format-Table
cmdlet 会生成格式化文本而不是结构化数据,最适合 CSV 格式。
如何将数据导出到 CSV 文件?要导出输出数据,您必须避免使用 Format-Table
cmdlet,并处理结构化数据以获得用于 CSV 导出的预期输出数据。如何?我们将在接下来的部分中学习。
通常,Format-Table
cmdlet 应该是管道中的最后一个,并且仅在您不想将结果导出为 CSV 文件时才建议使用它。
使用带有 -ExpandProperty
参数的 Select-Object
Cmdlet
使用带有 -ExpandProperty
参数的 Select-Object
cmdlet 从 PowerShell 中导入的数据中获取一个属性的值(不包含其标头)。
使用带有 -ExpandProperty 参数的 Select Cmdlet:
Import-Csv "E:/Test/inputFile.csv" | Select-Object -ExpandProperty FirstName
输出 :
Shruti
Mehvish
John
Saira
Gurmeet
我们之前已经了解了 Import-Csv
和 Select-Object
。在这里,我们使用 -ExpandProperty 参数来指定要捕获其值的属性名称。
到目前为止,我们使用 Select-Object
cmdlet 来获取一个或所有不带标头的属性的值。 如果我们严格指示获取 n
属性的值并将它们显示在 PowerShell 控制台上怎么办?请参阅以下脚本以了解如何操作。
使用带有 -Skip
参数的 Select-Object
Cmdlet
使用带有 -Skip
参数的 Select
cmdlet 从 PowerShell 中导入的数据中删除标头并获取所有属性的值。
使用带有 -Skip 参数的 Select-Object Cmdlet:
$inputData = Import-Csv -Path "E:/Test/inputFile.csv"
$inputData |
ConvertTo-Csv -NoTypeInformation |
ForEach{ $_ -replace '"' ,''} |
Select-Object -Skip 1 |
Set-Content "E:/Test/outputFile.csv"
echo "Data with Header:", $inputData
$outputData = Get-Content "E:/Test/outputFile.csv"
echo "`nData without Header:", $outputData
输出 :
Data with Header:
FirstName LastName Department
--------- -------- ----------
Shruti Mehta Computer Science
Mehvish Ashiq Mathematics
John Christopher Psychology
Saira Daniel Humanities
Gurmeet Kaur Arts
Data without Header:
Shruti,Mehta,Computer Science
Mehvish,Ashiq,Mathematics
John,Christopher,Psychology
Saira,Daniel,Humanities
Gurmeet,Kaur,Arts
我们再次使用 Import-Csv
cmdlet 从我们使用 -Path
参数指定的 CSV 文件导入数据;我们将导入的数据存储在 $inputData 变量中,该变量被转发到多管道语句。
在此多管道语句中,我们使用 ConvertTo-Csv cmdlet 将 .NET 对象转换为一系列 CSV 字符串。由于我们不需要类型信息,因此我们使用 -NoTypeInformation
参数从输出中删除 #TYPE
信息标头。此输出进一步通过管道传送到 ForEach
语句。
ConvertTo-Csv
cmdlet 用于由于某些待处理操作而无需导出到文件的情况。自 PowerShell 6.0 以来,-NoTypeInformation
是默认参数。
ForEach
语句迭代由 ConvertTo-Csv
cmdlet 生成的对象数组,并将双引号 ("
) 替换为空字符串 ( ''
) 使用 -replace
运算符,这里,$_
表示当前项。
然后,我们使用带有 -Skip
参数的 Select-Object
cmdlet,该参数的值设置为 1
(这是该参数的起始值) )。它选择跳过标头的所有数据,并将其通过管道传送到 Set-Content
cmdlet,该 cmdlet 写入 outputFile.csv
文件。
我们使用 Get-Content
cmdlet 检索 outputFile.csv
文件的内容,并使用 echo
命令打印带有/不带有PowerShell 控制台上的标头。
如果您不想使用 ConvertTo-Csv
cmdlet,则必须使用 Get-Content
cmdlet 读取 inputFile.csv 的内容
文件。否则,您的 outputFile.csv
将包含 @{FirstName=Mehvish; 中的内容;姓氏=Ashiq; Department=Mathematics}
格式。
使用带有 -Skip 参数的 Select-Object Cmdlet:
$inputData = Get-Content "E:/Test/inputFile.csv"
$inputData |
Select-Object -Skip 1 |
Set-Content "E:/Test/outputFile.csv"
echo "Data with Header:", $inputData
$outputData = Get-Content "E:/Test/outputFile.csv"
echo "`nData without Header:", $outputData
输出 :
Data with Header:
FirstName,LastName,Department
Shruti,Mehta,Computer Science
Mehvish,Ashiq,Mathematics
John,Christopher,Psychology
Saira,Daniel,Humanities
Gurmeet,Kaur,Arts
Data without Header:
Shruti,Mehta,Computer Science
Mehvish,Ashiq,Mathematics
John,Christopher,Psychology
Saira,Daniel,Humanities
Gurmeet,Kaur,Arts
如果您想替换主文件(inputFile.csv
)中的内容,那么您可以使用以下紧凑命令:
使用带有 -Skip 参数的 Select-Object Cmdlet:
(Get-Content E:/Test/inputFile.csv)|
Select-Object -Skip 1|
Set-Content "E:/Test/inputFile.csv"
输出:inputFile.csv 的内容:
Shruti,Mehta,Computer Science
Mehvish,Ashiq,Mathematics
John,Christopher,Psychology
Saira,Daniel,Humanities
Gurmeet,Kaur,Arts
对于这种特定方法,不要忘记使用 ()
括起 Get-Content
cmdlet,以便它可以读取整个 inputFile.csv
首先进入内存,如果您应该将其作为同一命令的一部分保存回确切的文件,则这是强制性的。
将 Select-Object
与 ForEach-Object
Cmdlet 结合使用
使用 Select-Object
cmdlet 和 ForEach-Object
cmdlet 从导入的数据中删除 n
属性的标头。
将 Select-Object 与 ForEach-Object Cmdlet 结合使用:
Import-Csv "E:/Test/inputFile.csv" |
Select-Object FirstName, LastName |
ForEach-Object {$_.FirstName + "," + $_.LastName}
输出 :
Shruti,Mehta
Mehvish,Ashiq
John,Christopher
Saira,Daniel
Gurmeet,Kaur
我们已经了解了 Import-Csv
、Select-Object
和 ForEach-Object
cmdlet。此方法最好选择 n
个属性,其中 n
大于 1
且小于给定 CSV 中的记录总数文件。
或者,我们可以使用 -f
运算符,如下所示:
使用 -f 运算符:
Import-Csv "E:/Test/inputFile.csv" |
%{ "{0},{1}" -f $_.FirstName,$_.LastName }
输出 :
Shruti,Mehta
Mehvish,Ashiq
John,Christopher
Saira,Daniel
Gurmeet,Kaur
我们使用 Import-Csv
cmdlet 从指定的 CSV 文件导入内容,该内容进一步通过管道传输到 ForEach-Object
命令来处理每个对象。 %
是 ForEach-Object
cmdlet 的别名。
在 ForEach-Object
脚本块中,我们使用 -f
字符串格式运算符来格式化输出。此处,"{0},{1}"
格式字符串定义了格式设置模式,指定了两个占位符 {0}
和 {1}
对于名字和姓氏。
$_
表示当前正在管道中处理的对象;此处,使用点符号作为 $_.FirstName
和 $_.LastName
访问 FirstName
和 LastName
属性。
到目前为止,我们已经学习了如何从 CSV 文件导入数据并在进一步处理之前删除标头。如果您想从 PowerShell 命令的输出中删除标头该怎么办?
从 PS 命令的输出中删除标头
我们有多种方法可以从 PowerShell 命令生成的输出中删除标头。我们可以根据我们的项目需要使用其中任何一个。下面让我们来了解其中的一些。
使用 -HideTableHeaders
参数从 PowerShell 中导入的数据中删除标头。
使用 -HideTableHeaders 参数:
Get-Alias | Format-Table -HideTableHeaders
输出 :
Alias % -> ForEach-Object
Alias ? -> Where-Object
Alias ac -> Add-Content
Alias asnp -> Add-PSSnapin
Alias cat -> Get-Content
Alias cd -> Set-Location
Alias CFS -> ConvertFrom-String 3.1.0.0 Microsoft.PowerShell.Utility
... ... ... ...
... ... ... ...
... ... ... ...
使用带有 -ExpandProperty
参数的 Select
cmdlet 可在 PowerShell 中获取一个属性的值,而无需其标头。
使用带有 -ExpandProperty 参数的 Select Cmdlet:
Get-Alias | Select -ExpandProperty Name
输出 :
%
?
ac
asnp
cat
cd
CFS
chdir
...
...
...
请记住,Select
是 Select-Object
的别名,这意味着您可以交替使用它们。
在 PowerShell 中使用 ForEach
循环获取一个属性的值,而无需其标头。
使用 ForEach 循环:
Get-Alias | ForEach {$_.Name}
输出 :
%
?
ac
asnp
cat
cd
CFS
chdir
...
...
...
使用 -f
运算符在 PowerShell 中获取多个属性的值,而无需其标头。
使用 -f 运算符:
Get-Alias | %{ "{0},{1}" -f $_.CommandType,$_.Definition }
输出 :
Alias,ForEach-Object
Alias,Where-Object
Alias,Add-Content
Alias,Add-PSSnapIn
Alias,Get-Content
Alias,Set-Location
Alias,ConvertFrom-String
Alias,Set-Location
Alias,Clear-Content
... , ...
... , ...
... , ...
我们在从导入的数据中删除标头的同时学习了这些 cmdlet 和运算符。
这就是 Powershell 从输出中删除标头的全部内容。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag