Итак, у меня есть несколько файлов вида
filename_date.csv
в папке, например что-то вроде
filename_2010_01_01.csv
, которые содержат, скажем, ... 1000 строк сформат вроде этого
37845287|2364532467|237849853
04568750|89345735385|94573857
Но у меня есть 365 таких файлов на весь год, по одному на каждый день.Что я хотел бы сделать, это сделать какой-то удар?Возможно, сценарий берет дату из имени файла и добавляет ее в конец каждой из строк x в каждом файле, чтобы результат был примерно таким:
filename_2010_01_01.csv
37845287|2364532467|237849853|2010_01_01
04568750|89345735385|94573857|2010_01_01
filename_2010_01_02.csv
438574|563546567|2342523525|2010_01_02
326345452|456454763|7856763|2010_01_02
Пока что я попробовал:
Я пробовал с этим
sed 's/$/|2010-01-01/' filename_2010-01-01.csv > filename_2010-01-01.csv
, который работает для одного файла.
Теперь я пытаюсь выполнить следующий цикл
FILES=~/Desktop/2010/byday/*
for f in $FILES
do
filename=$f | cut -d'/' -f7-
done
Как только у меня есть имя файла, я могу просто добавить команду sed в цикл, но у меня возникают проблемы при создании filename
var, чтобы получить значение команды
Если я просто выведу команду внутри цикла, она получит мне имя файла, эта команда будет только убрать путь из имени файла.
UPDATE:
Внутри цикла
filename=`basename $f`
что короче, чище и переменная действительно получает значение
ОБНОВЛЕНИЕ 2:
Этот цикл
FILES=~/Desktop/2010/byday/*
for f in $FILES
do
fname=`basename $f`
fname=${fname%.csv}
fname=${fname##filename_}
echo $fname
sed 's/$/|$fname/' filename_$fname.csv > filename__$fname.csv
done
На самом деле правильно выводит дату, НО что-то есть в команде sed tHat удаляет содержимое файла
ОБНОВЛЕНИЕ 3:
С этим я почти там
FILES=~/Desktop/2010/byday/*
for f in $FILES
do
fname=`basename $f`
fname=${fname%.csv}
fname=${fname##partitioned.csvmerged_}
sed 's/$/|$fname/' partitioned.csvmerged_${fname}.csv > $fname.csv
done
Он записывает новый файл с только датой в качестве имени файла (который являетсяхорошо) но я не уверен, как я должен интерполировать там переменную, так как при этом вывод в файл
438574|563546567|2342523525|$fname
326345452|456454763|7856763|$fname