Передать параметр с sed

Я хотел бы добавить iptraf к списку. http://iptraf.seul.org

1
04.03.2012, 09:49
2 ответа

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, вышеупомянутое является только одним из них, и в зависимости от природы данных это могло бы быть более сложно, чем это.

1
27.01.2020, 23:54
  • 1
    Спасибо за ответ. Здесь File1 является шаблоном. ЕСЛИ у меня есть templatename с в file2, это возможный сделать это как ниже. Цель состоит в том, чтобы использовать другой шаблон для различных строк в file2. Любая справка ценится, в то время как IFS =, считайте scriptname jobname templatename, местоположение даты обновило ENV; сделайте sed-e "s/scriptname/$scriptname /" \-e "s/jobname/$jobname /" $templatename> "$location", сделанный <(file2) –  math 07.03.2012, 22:45

Это могло бы работать на Вас:

sed '1d;s|\([^,]*\),\([^,]*\),[^,]*,\([^,]*\).*|sed "1s/scriptname/\1/;5s/jobname/\2/" template >\3|' file.csv |
sh
0
27.01.2020, 23:54

Теги

Похожие вопросы