使用powershell删除csv中的空格和列
Delete spaces and column in csv with powershell
我正在尝试使用 powershell 将下载的“.txt”文件转换为美观实用的“.csv”文件。我很好地完成了这项任务,但在实现目标之前不久,我遇到了一些我无法解决的问题。
这是一个包含 mac 地址的 OUI 部分及其名称的列表。
这是它的样子(没有引用):
" 00-00-00 " EMPTY COLUMN "XEROX CORPORATION"
" 00-00-01 " EMPTY COLUMN "XEROX CORPORATION"
我现在的第一个问题是,如何去掉OUI-address 栏中的空格。第二个,如何删除空栏
最后应该是这样的(没有引用):
"00-00-00" "XEROX CORPORATION"
"00-00-01" "XEROX CORPORATION"
所以我们在第一列中有没有任何空格的 OUI,在第二列中有公司名称。但是这里名字中有空格很重要。
原文件内容:
00-00-09 XEROX CORPORATION
00-00-0A OMRON TATEISI ELECTRONICS CO.
00-00-0B MATRIX CORPORATION
00-00-0C CISCO SYSTEMS, INC.
希望你能帮助我。
这是一种方法,使用 Get-Content
和 Select-String
以及正则表达式来提取子字符串:
get-content "test.txt" | foreach-object {
$_ | select-string '\s*((?:[0-9a-f]{2}-){2}[0-9a-f]{2})\s+(.+)$' | foreach-object {
$oui = $_.Matches[0].Groups[1].Value
$description = $_.Matches[0].Groups[2].Value
}
new-object PSObject -property @{
"OUI" = $oui
"Description" = $description
} | select-object OUI,Description
}
对于包含成对引用字符串的输出,将 New-Object
替换为格式化字符串;例如:
get-content "test.txt" | foreach-object {
$_ | select-string '\s*((?:[0-9a-f]{2}-){2}[0-9a-f]{2})\s+(.+)$' | foreach-object {
$oui = $_.Matches[0].Groups[1].Value
$description = $_.Matches[0].Groups[2].Value
}
'"{0}" "{1}"' -f $oui,$description
}
您可以使用 https://www.regex101.com/ 等正则表达式测试器来查看正则表达式(即 Select-String
的参数)如何提取子字符串。
我正在尝试使用 powershell 将下载的“.txt”文件转换为美观实用的“.csv”文件。我很好地完成了这项任务,但在实现目标之前不久,我遇到了一些我无法解决的问题。
这是一个包含 mac 地址的 OUI 部分及其名称的列表。 这是它的样子(没有引用):
" 00-00-00 " EMPTY COLUMN "XEROX CORPORATION"
" 00-00-01 " EMPTY COLUMN "XEROX CORPORATION"
我现在的第一个问题是,如何去掉OUI-address 栏中的空格。第二个,如何删除空栏
最后应该是这样的(没有引用):
"00-00-00" "XEROX CORPORATION"
"00-00-01" "XEROX CORPORATION"
所以我们在第一列中有没有任何空格的 OUI,在第二列中有公司名称。但是这里名字中有空格很重要。
原文件内容:
00-00-09 XEROX CORPORATION
00-00-0A OMRON TATEISI ELECTRONICS CO.
00-00-0B MATRIX CORPORATION
00-00-0C CISCO SYSTEMS, INC.
希望你能帮助我。
这是一种方法,使用 Get-Content
和 Select-String
以及正则表达式来提取子字符串:
get-content "test.txt" | foreach-object {
$_ | select-string '\s*((?:[0-9a-f]{2}-){2}[0-9a-f]{2})\s+(.+)$' | foreach-object {
$oui = $_.Matches[0].Groups[1].Value
$description = $_.Matches[0].Groups[2].Value
}
new-object PSObject -property @{
"OUI" = $oui
"Description" = $description
} | select-object OUI,Description
}
对于包含成对引用字符串的输出,将 New-Object
替换为格式化字符串;例如:
get-content "test.txt" | foreach-object {
$_ | select-string '\s*((?:[0-9a-f]{2}-){2}[0-9a-f]{2})\s+(.+)$' | foreach-object {
$oui = $_.Matches[0].Groups[1].Value
$description = $_.Matches[0].Groups[2].Value
}
'"{0}" "{1}"' -f $oui,$description
}
您可以使用 https://www.regex101.com/ 等正则表达式测试器来查看正则表达式(即 Select-String
的参数)如何提取子字符串。