我正在尝试使用 PowerShell 从源文件中提取一系列行。代码可以运行,甚至看起来不错,但是从 FTP 软件和实际机器上查看时,字符之间的空格太多。
source.csv:
SRC_NAME,NOTF_UC_TYPE,NOTF_SCN_ID,DLV_ADDR_TYPE,DLV_ADDR_ID,AccountNo
BPS,1,150,3,0.0.0.1 /billinfo 11234567 108,13457890
BPS,1,150,3,0.0.0.1 /billinfo 12234567 108,32457890
BPS,1,150,3,0.0.0.1 /billinfo 12334567 108,34357890
BPS,1,150,3,0.0.0.1 /billinfo 12344567 108,34547890
BPS,1,150,3,0.0.0.1 /billinfo 12345567 108,34575890
搜索.txt: 12234567
12345567
12344567
预期输出.csv:SRC_NAME、NOTF_UC_TYPE、NOTF_SCN_ID、DLV_ADDR_TYPE、DLV_ADDR_ID、AccountNo
BPS、1,150、3、0.0.0.1 /billinfo 12234567 108,3457890
BPS、1,150、3、0.0.0.1 /billinfo 12345567 108,3457890
BPS、1,150、3、0.0.0.1 /billinfo 12344567 108,3457890
收到的输出:ÿþS RC _ NAME,NOTF _ UC _ TYPE,NOTF _ SCN _ ID,DLV _ ADDR _ TYPE,DLV _ ADDR _ ID,帐户号
BPS,1,1 5 0,3,0.0.0.1/billinfo 1 2 2 3 4 5 6 7 1 0 8,3 4 5 7 8 9 0
BPS,1,1 5 0,3,0.0.0.1/billinfo 1 2 3 4 5 5 6 7 1 0 8,3 4 5 7 8 9 0
BPS,1,1 5 0,3,0.0.0. 1 / 账单信息 1 2 3 4 4 5 6 7 1 0 8,3 4 5 7 8 9 0
所用脚本:
#copy the header
Get-Content .\source.csv -First 1 > ExpectedOutput.csv -Encoding ASCII
#search the contents of search.txt in source.csv and append to the ExpectedOutput.csv file
get-content .\source.csv |
select-string -Pattern (Get-Content .\search.txt) |
Add-Content ExpectedOutput.csv -Encoding ASCII
答案1
由于这些脚本是手动运行的,因此解决方法是:
- 不要直接在 FTP 中打开,而是在本地系统上使用记事本/文本编辑器打开生成的 CSV。
- 复制全部内容并将其粘贴到 FTP 软件上的文件中
- 新文件没有多余的空格。
这是一种简单但可靠的完成此任务的方法。