![获取 CSV 文件中的元素,使其成为整数并将其添加到行首](https://linux22.com/image/1571225/%E8%8E%B7%E5%8F%96%20CSV%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%85%83%E7%B4%A0%EF%BC%8C%E4%BD%BF%E5%85%B6%E6%88%90%E4%B8%BA%E6%95%B4%E6%95%B0%E5%B9%B6%E5%B0%86%E5%85%B6%E6%B7%BB%E5%8A%A0%E5%88%B0%E8%A1%8C%E9%A6%96.png)
我有一个包含数百个条目的 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
。
这做了几件事:
答案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