Вставка имени файла в последний столбец файла CSV. - PullRequest
0 голосов
/ 20 января 2011

Я хотел бы вставить имя файла CSV-файла в последний столбец файла CSV.

Я нашел успешный пакетный файл Windows, но я ищу скрипт bash для Linux.

Я вложил пакетный файл Windows:

@echo off
setLocal EnableDelayedExpansion

for /f "tokens=* delims= " %%c in ('dir/b/a-d *.csv') do (
  set FN=%%~Nc
  set /a N=0

  for /f "tokens=* delims= " %%a in (%%c) do (
    set /a N+=1
    if !N! equ 1 (
      echo %%a, id > !FN!.csv
    ) else (
      echo %%a, !FN! >> !FN!.csv
    )
  )
)

С нетерпением жду решения этого вопроса.

Henry

Ответы [ 2 ]

3 голосов
/ 21 января 2011

С (GNU) sed:

for file in *.csv; do
    sed -i "s/$/,$file/" "$file"
done

с POSIX sed:

for file in *.csv; do
    if sed "s/$/,$file/" "$file" > /tmp/"${file}".tmp; then
        mv /tmp/"${file}.tmp" "$file"
    fi
done
1 голос
/ 20 января 2011

Простой.

import sys
import glob

for filename in glob.glob(sys.argv[1]):
    file = open(filename)
    data = [line.rstrip() + "," + filename for line in file]
    file.close()

    file = open(filename, "w")
    file.write("\n".join(data))
    file.close()

Сохранить как "csvadd.py".Затем эта команда добавит имя файла в последний столбец (замените test.csv ofcourse):

python csvadd.py test.csv

EDIT

Изменен код, теперь он должен работать свсе, что поддерживает ОС (подстановочные знаки и т. д.).Теперь он также будет напрямую записывать изменения обратно в файл. ИСПОЛЬЗОВАТЬ С ОСТОРОЖНОМ

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