获取 CSV 文件中的元素,使其成为整数并将其添加到行首

获取 CSV 文件中的元素,使其成为整数并将其添加到行首

我有一个包含数百个条目的 CSV,并且正在尝试执行以下操作:

 1. Get the first element (decimal number, ex: 1.01)
 2. Remove the decimal part of the element (ex: 1)
 3. Add the new number to the beginning of the file

输入示例:

"1.01","China Town Grocery","OE"

以下是我需要的输出:

"1","1.01","China Town Grocery","OE"

现在,我一直在命令行使用以下 for/do 命令:

for /f "tokens=*" %a in (input.txt) do (echo "input.txt[0]",%a) >> output.txt

我知道我需要更改我回显的内容。但我不知道如何获取该值。我遗漏了什么?提前致谢。

答案1

尽管您将其标记为,这实际上看起来像 Windows

您无法在一行中完成您想要的操作,因此您需要创建一个批处理文件。

这是我想到的批处理文件:

@ECHO off
SETLOCAL EnableDelayedExpansion
for /f "tokens=*" %%a in (input.txt) do (
    CALL :GetNumber %%a
    echo "!num!",%%a
) >> output.txt

:GetNumber
for /f "tokens=1 delims=." %%a in (%1) do (
    set "num=%%a"
)

将此代码放入filename.bat与文件相同的目录中并运行input.txt

这做了几件事:

  1. 启用延迟扩张允许FOR循环内进行一些变量处理。
  2. 使用子程序处理当前行
  3. 将环境变量设置为您要查找的数字(因为批处理没有带有本机return语句的函数)
  4. 输出您想要的线条。

答案2

如果可以选择 PowerShell:

Import-CSV "input.txt" -Header A,B,C | select-object New,A,B,C | ForEach-Object { $_.New = [math]::Floor($_.A); return $_ } | Export-CSV -Path output.txt -NoTypeInformation

相关内容