file1
шаблон и file2
csv. То, что происходит, если две строки имеют то же расположение, не определено, решение ниже перезаписывает файл местоположения с последними данными. Это также неясно мне если /san00
каталог является единственным, используемым в части местоположения и если это, как предполагается, полный путь.
Местоположения создания решения относительно текущего каталога (замечают .
в .$dir
и .$location
).
while IFS=, read scriptname jobname date location updated env; do
dir=$(dirname $location)
[ -d .$dir ] || mkdir -p ".$dir"
sed -e "s/scriptname/$scriptname/" \
-e "s/jobname/$jobname/" file1 > ".$location"
done < <(tail -n +2 file2)
Решение с полными путями в месте, целевые каталоги должны существовать ранее
while IFS=, read scriptname jobname date location updated env; do
sed -e "s/scriptname/$scriptname/" \
-e "s/jobname/$jobname/" file1 > "$location"
done < <(tail -n +2 file2)
Существует много способов извлечь информацию file2
, вышеупомянутое является только одним из них, и в зависимости от природы данных это могло бы быть более сложно, чем это.
Это могло бы работать на Вас:
sed '1d;s|\([^,]*\),\([^,]*\),[^,]*,\([^,]*\).*|sed "1s/scriptname/\1/;5s/jobname/\2/" template >\3|' file.csv |
sh