Возможность найдена. Я подумал, что неплохо заглянуть в /var/log/apt
find /var/log/apt/ -name '*.gz' -exec zgrep 'linux-image-4.9.0-3-amd64' {} +
Это ядро появилось во время обновления до stretch.
В моем случае с
zgrep --version
zgrep (gzip) 1.6
`
Вы можете использовать этот скрипт
grep -o -P '(parameter).*(parameter)' your_teX_file.teX > questions.txt
вы получаете questions.txt
файл со всеми вопросами, после чего можете разделить его.
split -l 1 questions.txt
Команда csplit
не имеет сохраненного контекста (и не должна ), поэтому она всегда начинает отсчет с 1. Это невозможно исправить, но вы можете сохранить свое собственное подсчитанное значение, которое вы интерполируете. в строку префикса.
В качестве альтернативы попробуйте заменить
read -ep "Type the directory and/or name of the file needed to split. If there is more than one file, enter the files separated by a space. " files
...
for i in ${files[@]}
do
csplit $i --prefix=$save'/'$unit'q' --suffix-format='%03d.tex' /'\\question'/ '{*}'
done
с
read -a files -ep 'Type the directory and/or name of the file needed to split. If there is more than one file, enter the files separated by a space. '
...
cat "${files[@]}" | csplit - --prefix="$save/${unit}q" --suffix-format='%03d.tex' '/\\question/' '{*}'
Это один из относительно редких случаев, когда действительно нужно использовать cat {file} |...
, так как csplit
принимает только один файловый аргумент (или -
для stdin).
Я изменил ваше read
действие, чтобы использовать переменную массива, так как это то, что вы (правильно )пытаетесь использовать в своем for... do csplit...
цикле.
Независимо от того, что вы в конечном итоге решите сделать, я настоятельно рекомендую вам дважды -заключать в кавычки все ваши переменные, где вы их используете, особенно любое дальнейшее использование списка массивов, такого как "${files[@]}"
.
С помощью Awk вы можете запустить что-то вроде:
awk '/\\question/ {i++} ; {print > "q" i ".tex"}' exam*.tex
Если вы хотите определить out -dir (d )и тему (t )и управлять длиной номера:
awk '/\\question/ {f=sprintf("%s/%s-q%03d.tex", d, t, i++)} {print>f}' d=d1 t=t1 ex*
Чтобы пропустить преамбулу TeX, мы можем «печатать» только тогда, когда определено «f»:
awk '/\\question/ {f=sprintf("%s/%s-q%03d.tex", d, t, ++i)}
f {print>f}' d=d1 t=t1 ex*