Откройте CSV-файл в DOS - PullRequest
       14

Откройте CSV-файл в DOS

1 голос
/ 05 ноября 2010

Можно ли открыть CSV-файл, например:

a,b,c,d,e,f,g,h

И сделать так, чтобы DOS прочитал его (в пакетном файле), проверил данные и затем удалил их из файла при определенных условиях?

Псевдокод:

open csv file
for each letter
    if letter is e
        remove e from csv file
close and save csv file

РЕДАКТИРОВАТЬ:

Если я изменю свой источник данных с CSV на это:

a
b
c
d
e
f
g
h

Тогда яможно назвать это:

rename file.txt file.bak
        for /f %%a in (file.bak) do (
            set hmm=%%a
            if !hmm!==e set hmm=helloworld
            echo !hmm! >> file.txt)

Хотя это распечатает исходные данные после новых изменений следующим образом:

a
b
c
d
helloworld
f
g
h
a
b
c
d
e
f
g
h

Ответы [ 4 ]

1 голос
/ 05 ноября 2010

С помощью FOR /F вы можете просматривать текстовый файл и обрабатывать содержимое каждого столбца (называемые токенами), где вы можете выбрать символ, разделяющий столбцы.

Чтобы удалить его из файла, я думаю, вам придется воссоздать новый файл, в котором вы решаете, что писать, а что нет.

0 голосов
/ 05 ноября 2010

Вот базовый пример в Windows PowerShell 2:

$split = Get-Content "C:\temp\test.csv" | ForEach-Object {$_.Split(",") | Where-Object {$_ -ne "e"} }
[string]::join(",", $split) | Out-File -Encoding ASCII "C:\temp\testOUT.csv"

Это будет работать для базового варианта (одна строка). У него проблемы с многострочным CSV; возможно, кто-то с большим количеством PS-фу, чем я могу это исправить.

Я не проверял это с граничными условиями (пустой файл, пустая строка, строка, состоящая из одной буквы, соседние запятые, строка всех символов и т. Д.).

Для файлов CSV с заголовками столбцов PowerShell предоставляет командлет Import-Csv (а также Export-Csv).

0 голосов
/ 05 ноября 2010

Вот мое исправление:

rename file.txt file.bak
        for /f %%a in (file.bak) do (
            set hmm=%%a
            if !hmm!==e set hmm=helloworld
            echo !hmm! >> file.txt)
del file.bak

Если вы не удалите файл bak, он напечатает как txt, так и bak в новый файл!Weird!

0 голосов
/ 05 ноября 2010

Вы можете перебирать токены с помощью for / f и использовать set str =% str: e =%, чтобы удалить ненужные токены, а затем использовать ">", чтобы перенаправить его в другой файл.

...