Добавить строки в файл .txt, используя командный файл - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть файл с записями, который выглядит следующим образом:

Aaron,Daniel,,,AARDA,MEDICAL,10,HEH

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

У меня есть этот пакетный файл, который успешно добавляет кавычки в начало каждой строки:

@echo
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in (input.txt) do (
set /a N+=1
echo ^"%%a >>output.txt
)

Мне нужно, чтобы вывод выглядел так:

"Aaron,Daniel,,",AARDA,MEDICAL,10,HEH,

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Если интерес представляет альтернативный подход.

С файлом примера test.txt:

Aaron,Daniel,,,AARDA,MEDICAL,10,HEH
Bob,Edward,,,AARDA,MEDICAL,10,HEH

Используя sed, замените 4-ю запятую на ", и добавьте " в начале (^) и , в конце ($):

sed 's/,/",/4' test.txt | sed 's/^/"/' | sed 's/$/,/'

Возвращает:

"Aaron,Daniel,,",AARDA,MEDICAL,10,HEH,
"Bob,Edward,,",AARDA,MEDICAL,10,HEH,
0 голосов
/ 12 сентября 2018

Как я понял из комментария под вашим вопросом, 3 запятых подряд встречаются только один раз в каждой строке.В этом отношении решение чрезвычайно простое:

@echo off 
setlocal DisableDelayedExpansion
(
    for /F "usebackq tokens=*" %%A in ("input.txt") do (
        set "Line=%%A"
        setlocal EnableDelayedExpansion
        echo "!Line:,,,=,,",!,
        endlocal
    )
)>"output.txt"

Изначально оно запускается с отложенным расширением и включает отложенное расширение на каждой итерации цикла, чтобы предотвратить искажение строк, содержащих символ !.

Поскольку ,,, встречается только один раз в каждой строке (как я понял), его можно смело заменить на ,,",

tokens=*, необходимо только в том случае, если вы хотите удалить возможные начальные пробелыиз каждой строки, в противном случае вы можете просто использовать «delims =» для чтения всей строки в один токен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...