Замените шаблон в файле с длинной строкой

lpr -P "Print_to_PDF" file_to_print

Для получения списка в настоящее время настраиваемых принтеров работать lpstat -p -d.

3
29.07.2014, 10:48
2 ответа

Если существует 3 файла:

  • старый: исходные данные
  • замена: большой пакет текста Вы хотите вставить
  • newfile: где замены будут сохранены

Необходимо смочь сделать следующее со стандартной оболочкой

#!/bin/sh
for line in `cat old`; do
  if [ $line == "text to match" ]; then
    cat replace >> newfile
  else
    echo $line >> newfile
  fi
done
1
27.01.2020, 21:32
  • 1
    Существует два протеста с for in и while read: 1. Конечные символы, включенные в IFS, разделяются (например, конечные пробелы) 2. Маркер должен быть на его собственной строке (не посреди текста; это - только незначительная проблема для меня), –  Wilhelm Schuster 13.10.2013, 00:15

Как насчет использования xargs так как это знает о пределах размера аргумента:

cp "$template_file" "$output_file" || exit 1
echo "$listing" \
| xargs -I arg sed -i 's/{{LISTING}}/arg {{LISTING}}/' "$output_file" \
| sed -i 's/ {{LISTING}}//' "$output_file"

Протест здесь - это xargs полосы, запаздывающие новые строки в именах файлов.

0
27.01.2020, 21:32
  • 1
    Шаблонный файл должен быть указан с параметром командной строки: dir-listing.sh -t TEMPLATE –  Wilhelm Schuster 13.10.2013, 15:55
  • 2
    @wlhlm Отредактированный ответ. Посмотрите, помогает ли это. –  Joseph R. 13.10.2013, 19:49

Теги

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