Поиск строки в текстовом файле и замена ее содержимым существующего текстового файла. - PullRequest
0 голосов
/ 30 июля 2011

У меня есть проект из латекса, который я хочу встроить в файл epub с помощью pandoc.Я использую команду \ input {FILE} для хранения глав в отдельных латексных файлах.К сожалению, pandoc не понимает команду \ input, поэтому мои главы никогда не вставляются.

Мне нужно запустить скрипт или что-то еще, чтобы обработать файл main.tex, чтобы найти строки, которые выглядят как

\input{ch1.tex}
\input{ch2.tex}
...

и в каждой строке замените его содержимым этого файла, затем удалите исходную команду \ input, затем введите результаты во временный файл или передайте результат непосредственно в команду pandoc для сборки.

Этот проект построен с использованием MikTex и TexLive для WinXP и Debian соответственно.Решение, которое работает на Linux, является предпочтительным.

Ответы [ 2 ]

2 голосов
/ 30 июля 2011

Если у вас есть gawk:

gawk '
    match($0, /\\input\{([^\}]+)/, a) {
        system("cat " a[1])
        next
    }
    {print}
'
1 голос
/ 30 июля 2011

Использование Perl:

$ cat file1.txt
foo
bar
qwe\input{file2.txt}asd\input{file3.txt}zxc
baz
$ cat file2.txt
qux
quux
quuux
$ cat file3.txt
xyzzy
xyzzzy

$ <file1.txt  perl -pe 's/\\input{([^}]*)}/open $1,"<$1";join("",<$1>)/ge'
foo
bar
qwequx
quux
quuux
asdxyzzy
xyzzzy
zxc
baz
...